2012-10-11 25 views
9

सुरक्षित मुझे पता है कि प्रश्न How do I secure my database connection credentials? कहा गया है और (जैसे How to secure database passwords in PHP?) कई बार जवाब दे दिया।डेटाबेस कनेक्शन जानकारी

उस प्रश्न का एक सामान्य रूप से स्वीकृत उत्तर वेब रूट के बाहर विवरण संग्रहीत करना है। लेकिन मैं उत्सुक हूं कि यह वास्तव में बहुत अंतर क्यों बनाता है।

मैं क्या समझ से, एक व्यक्ति HTTP के माध्यम से PHP फ़ाइल के स्रोत डाउनलोड नहीं कर सकते हैं (जब तक अपने वेब Sever ठीक से विन्यस्त नहीं है, लेकिन आप के बारे में है कि अभी पता होगा)। तो आप क्रेडेंशियल्स को तब तक नहीं देख पाएंगे जब तक कि आपके पास PHP फ़ाइल के स्रोत तक पहुंच न हो। अगर मैं गलत हूं तो मुझे सही करें, लेकिन क्या इसका मूल अर्थ यह नहीं है कि आपको खोल पहुंच की आवश्यकता होगी? और यदि आपके पास खोल पहुंच है, तो क्या आप वेब रूट के बाहर फ़ाइल को किसी भी तरह से नहीं प्राप्त कर सकते हैं?

यदि उस प्रश्न का उत्तर यह है कि फ़ाइल में विशेष अनुमतियां हो सकती हैं जो वेब सर्वर उपयोगकर्ता को इसे पढ़ने की अनुमति नहीं देती है, तो (मुझे लगता है कि मेरे पास खोल पहुंच है), क्या मैं बस लिख नहीं सकता (या संशोधित) किसी भी PHP फ़ाइल को केवल उन प्रमाण-पत्रों को प्रतिबिंबित करने के लिए?

तो सवाल है, यह वास्तव में कोई अंतर है कि क्या आप वेब जड़ के बाहर एक फ़ाइल में PHP स्क्रिप्ट बनाम सीधे साख की दुकान करता है?

उत्तर

8

मान लीजिए, वेब सर्वर में एक त्रुटि के कारण, वेबसर्वर नहीं रह गया है php फ़ाइलें संसाधित करता है, लेकिन उनमें HTML फाइल के रूप में मानता है।

http://mysite.com/config.php की तरह यह मामला कुछ में सरल अपने डेटाबेस की साख प्रकट होगा।

तो जवाब है: हाँ, यह वास्तव में कोई फर्क पड़ता है, जहां और आप कैसे डेटाबेस साख की दुकान।

+1

हाँ यह वास्तव में एक बार फेसबुक के साथ हुआ! http://techcrunch.com/2007/08/11/facebook-source-code-leaked/ – fire

+0

या इस बग को रोकें: http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012- 1823/ – Tchoupi

+0

@ डेव सवाल यह था: * हमें वेबूट के बाहर डीबी प्रमाण-पत्र क्यों स्टोर करना चाहिए? *। यह सवाल का जवाब देता है। – Tchoupi

5

मुख्य मुद्दा यह है कि वेब सर्वर बाद में टूट सकता है। जैसे एक सॉफ़्टवेयर अद्यतन php के बाद अब ठीक से काम नहीं कर सकता है और सर्वर सीधे फ़ाइलों को वितरित करने के लिए वापस आ जाता है। या फिर सॉफ़्टवेयर अद्यतन के बाद कॉन्फ़िगरेशन रीसेट हो सकता है, इसलिए फ़ाइल एक्सटेंशन के लिए PHP अब पंजीकृत नहीं है। या सर्वर भारी भार के नीचे टूट जाता है और फ़ाइलों को स्पष्ट रूप से वितरित करना शुरू करता है।

कई बातें भी हो सकता है और यह नहीं बल्कि गंदगी कुछ बिंदु पर config आसान है। बेहतर सुरक्षित रहें और इसे दस्तावेज़ रूट के बाहर रखें।

+0

बहुत अच्छा बिंदु। मैं जो कुछ ढूंढ रहा था वह उतना ही अधिक है। मैंने सॉफ़्टवेयर अपडेट्स और उस तरह की चीज को कॉन्फ़िगरेशन को गड़बड़ करने के बारे में सोचा नहीं था। धन्यवाद! – Travesty3

0
  1. एक हे/एस आपके आवेदन के लिए उपयोगकर्ता बनाएँ, 'UserForMyApp'

  2. है कि उपयोगकर्ता के लिए, एक हे/एस उपयोगकर्ता वातावरण चर 'MY_APP_DATABASE_PASSWORD' बनाते हैं, और सेट जैसे मूल्य

  3. अपने अनुप्रयोग चलाने के रूप में 'UserForMyApp'

  4. MyApp में, हे/एस उपयोगकर्ता वातावरण चर पढ़ा 'MY_APP_DATABASE_PASSWORD' और का उपयोग करें कि डेटाबेस के लिए लॉग इन करने के लिए

अन्य गैर-रूट उपयोगकर्ता किसी अन्य उपयोगकर्ता के लिए ओ/एस उपयोगकर्ता पर्यावरण चर नहीं पढ़ सकते हैं। यह डिफ़ॉल्ट है। डब्ल्यू फ़ाइल अनुमतियों के विपरीत, आपको कुछ भी सेट करने की ज़रूरत नहीं है।

दुर्घटना से स्रोत नियंत्रण में पासवर्ड संग्रहीत करने का कोई मौका नहीं है।

यदि डीबी और ऐप एक ही मशीन पर हैं तो डीबी को पासवर्ड के बिना स्थानीय पहुंच पर भरोसा कर सकता है।

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