𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 𝗔𝘂𝗱𝗶𝘁 𝗥𝗲𝘀𝘂𝗹𝘁𝘀: 𝗪𝗵𝘆 𝗜 𝗳𝗲𝗹 𝗲𝗺𝗯𝗮𝗿𝗿𝗮𝘀𝘀𝗲𝗱
मी अलीकडेच माझ्या सर्व साईड प्रोजेक्ट्सवर (side projects) सुरक्षा ऑडिट केले. यामध्ये माझे FastAPI backend, Telegram bots, PWA आणि Streamlit apps यांचा समावेश आहे.
मला वाटले होते की मी काळजीपूर्वक काम केल्यामुळे माझा कोड सुरक्षित आहे. पण मी चुतो.
तुम्हाला या चुका टाळण्यास मदत करण्यासाठी मी हे वास्तविक प्रोडक्शन बग्स (production bugs) शेअर करत आहे. हे केवळ सैद्धांतिक चेकलिस्ट नाहीत, तर या माझ्या स्वतःच्या चुका आहेत.
कंडिशनल ऑथेंटिकेशनचा सापळा (The Conditional Authentication Trap) मी असा कोड लिहिला होता जो API secret पडताळण्यापूर्वी तो अस्तित्वात आहे की नाही हे तपासत असे. जर environment variable उपलब्ध नसेल, तर ती तपासणी पूर्णपणे वगळली जात असे. याचा अर्थ असा की माझा संपूर्ण API सर्वांसाठी खुला होता. नियम: जर एखादे secret उपलब्ध नसेल, तर 500 error देऊन प्रक्रिया थांबवा. ऑथेंटिकेशन कधीही वगळू नका.
Git हिस्ट्री लीक (The Git History Leak) एकदा मी जलद चाचणीसाठी API key हार्डकोड केला होता. नंतर मी तो .env फाईलमध्ये हलवला आणि मला वाटले की समस्या सुटली आहे. पण Git सर्व काही लक्षात ठेवते. कोणीही माझ्या commit history मध्ये ती की शोधू शकते. नियम: जर तुम्ही एखादी की commit केली असेल, तर ती चोरीला गेली आहे असे समजा. ती त्वरित बदला (Rotate). तुमची हिस्ट्री स्वच्छ करण्यासाठी git-filter-repo वापरा.
डेबग एंडपॉइंट लीक (The Debug Endpoint Leak) समस्या सोडवण्यासाठी (troubleshoot) मी प्रोडक्शनमध्ये
/debug/configएंडपॉइंट ठेवला होता. यामुळे माझे डेटाबेस URLs आणि पर्यावरण सेटिंग्ज (environment settings) उघड झाली. नियम: डिप्लॉयमेंटपूर्वी सर्व debug endpoints काढून टाका. त्याऐवजी logs वापरा.एरर्सद्वारे सिस्टम माहिती लीक होणे (Leaking System Info via Errors) मी माझ्या error responses मध्ये
str(e)वापरले होते. यामुळे डेटाबेस एरर्स आणि फाईल पाथ थेट वापरकर्त्याला पाठवले जात होते. हल्लेखोर (Attackers) तुमच्या इन्फ्रास्ट्रक्चरचा नकाशा तयार करण्यासाठी याचा वापर करतात. नियम: स्वतःसाठी सविस्तर एरर लॉग करा. क्लायंटला फक्त एक सामान्य "Internal Server Error" संदेश पाठवा.फ्रंटएंडमधील XSS धोका (The XSS Risk in Frontend) मी युजर कंटेंट रेंडर करण्यासाठी
innerHTMLवापरले होते. यामुळे इतर वापरकर्त्यांच्या ब्राउझरमध्ये स्क्रिप्ट्स चालवणे शक्य झाले. नियम: नेहमी HTML escape करा.innerHTMLला कोणताही कोड कार्यान्वित करण्याचा मार्ग मानून सावध राहा.रेट लिमिट्सचा अभाव (Missing Rate Limits) माझ्याकडे असे एंडपॉइंट्स होते जे कोणत्याही मर्यादेशिवाय महागड्या AI मॉडेल्सना कॉल करत होते. एक सिंगल लूप किंवा चोरीची की मला शेकडो डॉलर्सचा फटका बसवू शकली असती. नियम: ऑथेंटिकेशन अनधिकृत वापरकर्त्यांना थांबवते. रेट लिमिटिंग (Rate limiting) अधिकृत वापरकर्त्यांना तुमच्या सिस्टमचा गैरवापर करण्यापासून रोखते.
शिथिल CORS पॉलिसी (Permissive CORS Policy) मी प्रोडक्शनमध्ये
allow_origins=["*"]वापरले होते. यामुळे कोणतीही साइट तुमच्या API ला रिक्वेस्ट पाठवू शकते. नियम: फक्त तुमच्या विशिष्ट फ्रंटएंड डोमेनला परवानगी द्या.The Temporary File Leak If my code crashed while processing a file, the temporary file stayed on the disk forever. This wastes space and leaks sensitive data. Rule: Use try-finally blocks to ensure files are deleted even if an error occurs.
My new mandatory checklist:
Before coding: • Create a .gitignore • Create a .env.example
For every endpoint: • Add authentication • Use generic error messages • Add rate limits to expensive tasks
Before committing: • Scan for secrets in your diff
Before deploying: • Run security audits on your dependencies
Security issues do not happen by accident. They happen because of "TODO" comments and "temporary" fixes that stay in production forever.
Fixing a bug is boring. Fixing a breach is expensive.