2010-08-22 5 views
22

डिफ़ॉल्ट रूप से, Django डेटाबेस होस्ट/उपयोगकर्ता/पासवर्ड प्रोजेक्ट सेटिंग्स.py फ़ाइल में सादा पाठ में संग्रहीत किया जाता है।क्या यह ठीक है कि डेटाबेस प्रमाण-पत्र सादे पाठ में संग्रहीत हैं?

मुझे इस समय एक बेहतर तरीके से नहीं लगता है, लेकिन यह पासवर्ड भंडारण के लिए सर्वोत्तम प्रथाओं के खिलाफ प्रतीत होता है। अनुमोदित, अगर किसी हमलावर के पास सेटिंग फ़ाइल तक पहुंच है, तो शायद सभी पहले ही खो चुके हैं। भले ही फ़ाइल एन्क्रिप्ट की गई हो, हमलावर के पास तब तक डिक्रिप्ट करने का साधन होगा।

क्या यह ठीक है?

उत्तर

22

आप सही हैं। लेकिन आप सुरक्षा बढ़ा सकते हैं:

  • अनुमतियों को सही तरीके से सेट करना (यह आपके सेट अप पर निर्भर करेगा)। आदर्श रूप से केवल पायथन फ़ाइल को पढ़ने में सक्षम होना चाहिए।

  • www या htdocs रूट से फ़ाइल को संग्रहीत करना। यदि इस बिंदु पर एक हमलावर के पास अभी भी पहुंच है, तो आप वैसे भी खराब हो जाते हैं।

  • अतिरिक्त सुरक्षा के लिए, आप सममित एन्क्रिप्शन (उदाहरण: एईएस) का उपयोग कर कनेक्शन सेटिंग्स एन्क्रिप्ट कर सकते हैं। कहीं और कुंजी स्टोर करें। तो अगर कोई कनेक्शन सेटिंग्स तक पहुंचने में कामयाब रहा, तो भी उन्हें कुंजी खोजने की आवश्यकता होगी। मुख्य दोष यह है कि अब आपको कनेक्शन विधि को फिर से लिखना होगा।

+4

एन्क्रिप्शन को संभालने के लिए कनेक्शन विधि को विस्तार/पुनर्लेखन करने का कोई उदाहरण है? इसके अलावा, एक यूनिक्स पर्यावरण में उस कुंजी को रखने के लिए एक सुरक्षित जगह है यदि बॉक्स स्वयं ही समझौता कर चुका है? –

2

हां, यह किसी भी डेटाबेस संचार कार्यक्रम के लिए मानक प्रक्रिया है। ऐसा करने के लिए वास्तव में एक "बेहतर तरीका" नहीं है।

अमान्य होस्ट को कनेक्ट करने से रोकने में मदद करने के तरीके हैं (आईपी टेबल, निजी आईपी पते), लेकिन वास्तविक कनेक्शन विवरण लगभग हमेशा सादे पाठ होते हैं।

वेब रूट के बाहर फ़ाइल को संग्रहीत करने से कुछ मदद मिलेगी, लेकिन अगर हमलावर के पास फ़ाइल सिस्टम तक पहुंच है तो इससे कोई फर्क नहीं पड़ता।

12

Twelve-Factor App Heroku recommends

कोड से config की सख्त जुदाई द्वारा संहिताबद्ध।

यह विशेष रूप से प्रमाण-पत्रों के प्रबंधन के लिए महत्वपूर्ण है, जो आदर्श रूप से कभी भी स्रोत नियंत्रण के लिए प्रतिबद्ध नहीं होना चाहिए।

django-environ लाइब्रेरी सेटिंग्स.py फ़ाइल से अधिकांश पर्यावरण-विशिष्ट कॉन्फ़िगरेशन खींचने के लिए एक अच्छा दृष्टिकोण प्रदान करता है, लेकिन आप मानक ओएस लाइब्रेरी के साथ सबसे संवेदनशील बिट्स का संदर्भ देकर एक लंबा सफर तय कर सकते हैं, उदा। 'PASSWORD': os.environ['DBPASS']

बेशक, आप शायद अभी भी कुछ पासवर्ड सादा पाठ कहीं में संगृहीत करेंगे, लेकिन यदि वह फ़ाइल आपके codebase में एम्बेडेड नहीं है, यह अब तक कम लीक किए जाने की संभावना है।

संबंधित मुद्दे