मी माझ्या साइड प्रोजेक्ट्सचे सुरक्षेसाठी ऑडिट केले — मला काय आढळले ते येथे आहे

मी अलीकडेच माझ्या सर्व साइड प्रोजेक्ट्सचे ऑडिट केले. मी माझे FastAPI बॅकएंड्स, Telegram बॉट्स आणि वेब ॲप्स तपासले. मला वाटले होते की मी काळजीपूर्वक काम केले आहे.

मी चुकत होतो.

मला असे वास्तविक बग्स आढळले जे मी प्रत्यक्षात प्रोडक्शनमध्ये पाठवले होते. या केवळ सैद्धांतिक समस्या नाहीत. वेगाने काम करण्याच्या प्रयत्नात मी केलेल्या या चुका आहेत.

मला आढळलेल्या मुख्य समस्या आणि त्या कशा सुधाराव्या याबद्दलची माहिती खालीलप्रमाणे आहे:

१. कंडिशनल ऑथेंटिकेशन (Conditional Authentication) मी असा कोड लिहिला होता जो फक्त 'secret' अस्तित्वात असल्यास API की तपासत असे. जर मी माझ्या एन्व्हायरमेंटमध्ये 'secret' सेट करायला विसरलो, तर ही तपासणी पूर्णपणे वगळली जात असे. यामुळे माझे API सर्वांसाठी खुले झाले होते.

२. Git हिस्ट्रीमध्ये की (Keys) लीक होणे मला माझ्या Git हिस्ट्रीमध्ये जुन्या API की आढळल्या. मी नंतर त्या .env फाईल्समध्ये हलवल्या होत्या, परंतु Git तुमच्या कोडची प्रत्येक जुनी आवृत्ती कायमस्वरूपी जतन करून ठेवते.

३. उरलेले डेबग एंडपॉइंट्स (Debug Endpoints) मी प्रोडक्शनमध्ये असे एंडपॉइंट्स तसेच ठेवले होते जे माझे डेटाबेस कॉन्फिगरेशन आणि सिस्टम सेटिंग्स दाखवत होते. हे डेव्हलपमेंट दरम्यान उपयुक्त असतात परंतु प्रत्यक्ष वापरासाठी धोकादायक असतात.

४. सविस्तर एरर मेसेजेस (Verbose Error Messages) मी वापरकर्त्याला थेट सिस्टम एरर्स (raw system errors) परत करत होतो. या एरर्समुळे तुमचे फाईल पाथ, डेटाबेस प्रकार आणि लायब्ररी व्हर्जन समजतात. एखादा अटॅकर तुमच्या सिस्टमला लक्ष्य करण्यासाठी या डेटाचा वापर करू शकतो.

५. innerHTML द्वारे XSS मी माझ्या फ्रंटएंडमध्ये युजर डेटा रेंडर करण्यासाठी innerHTML चा वापर केला होता. यामुळे अटॅकर्सना तुमच्या साइटमध्ये स्क्रिप्ट्स इंजेक्ट करण्याची परवानगी मिळते.

६. रेट लिमिटिंगचा अभाव (Lack of Rate Limiting) माझ्याकडे असे एंडपॉइंट्स होते जे कोणत्याही मर्यादेशिवाय महागड्या AI मॉडेल्सना कॉल करत होते. एक वापरकर्ता काही मिनिटांतच प्रचंड बिल वाढवू शकत होता.

७. सवलतीचे CORS सेटिंग्स (Permissive CORS Settings) मी माझ्या मिडलवेअरमध्ये allow_origins=["*"] वापरले होते. यामुळे कोणतीही वेबसाइट तुमच्या API ला रिक्वेस्ट पाठवू शकते.

  1. फाईल लीकेज मी असा कोड लिहिला जो तात्पुरत्या फाईल्स तयार करतो, परंतु प्रक्रिया क्रॅश झाल्यास त्या डिलीट करण्यात अपयशी ठरतो. या फाईल्स तुमच्या सर्व्हरवर कायमच्या राहतात.

सुरक्षेच्या समस्या क्वचितच हेतुपुरस्सर असतात. त्या "मी हे नंतर ठीक करेन" असे म्हणण्याचे परिणाम असतात. पण ते "नंतर" कधीच येत नाही.

पहिल्या दिवसापासून तुमच्या वर्कफ्लोमध्ये सुरक्षा समाविष्ट करा. कोड कमिट (commit) करण्यापूर्वी आणि डिप्लॉय (deploy) करण्यापूर्वी तो तपासा.

स्रोत: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb