2012-12-20 30 views
5

संभव डुप्लिकेट:
Putting core classes above the web root - good or bad idea?क्यों MySQL प्रमाण पत्र www निर्देशिका के बाहर डाल दिया?

(.. क्या यह एक वर्ग है, को परिभाषित करता है, आदि) मैं पढ़ रहा है कि यह एक अच्छी आदत है MySQL कनेक्शन साख डाल करने के लिए रखने के वेब जड़ के बाहर (www फ़ोल्डर के ऊपर)।

यह क्यों है? यदि प्रमाण-पत्र एक .php फ़ाइल में हैं तो इससे कोई फ़र्क नहीं पड़ता कि फ़ाइल ब्राउज़र के माध्यम से पहुंच योग्य है या नहीं, है ना?

+3

वह क्षण तब तक आता है जब वेब सर्वर गलत कॉन्फ़िगर किया जाता है और गलती से इसकी व्याख्या करने के बजाय PHP स्रोत परोसता है। कृपया –

उत्तर

8

यह एक निवारक उपाय है। अगर कोई आपके अपाचे सर्वर में php मूल्यांकन को गलती से अक्षम करता है या .htaccess फ़ाइल में अपाचे सेटिंग बदलता है, तो फ़ाइल को किसी भी सादा पाठ फ़ाइल की तरह प्रदर्शित किया जा सकता है। या, यदि आप गलती से एक php स्टार्ट टैग भूल जाते हैं, तो इसे सादा पाठ की तरह पुन: बनाया जाएगा। ऐसा नहीं है कि आप इतनी बेवकूफ गलती करेंगे, लेकिन शायद आपके कोड पर काम करने वाली भविष्य की नौसिखिया गलती कर सकती है।

एक संभावित वेक्टर क्यों खुलता है जब आप इसे कभी भी संभव से रोक सकते हैं? बस उन लोगों की सलाह लें जिन्होंने अपना पैर शूट किया है (या मेरे जैसे, दोनों पैरों और हाथों को गोली मार दी) और अपने डॉक्रूट के बाहर प्रमाण-पत्रों को स्थानांतरित करें।

5

क्योंकि, कुछ हद तक, वेब रूट के नीचे कुछ भी सुरक्षित नहीं है। यह इंटरनेट पर उपलब्ध है, जो इसे मूल रूप से असुरक्षित बनाता है।

हमेशा एक संभावना है कि एक गलत कॉन्फ़िगर किया गया सर्वर किसी भी PHP फ़ाइल की सामग्री को आउटपुट करने के बजाय PHP को भेजने के बजाय एक दिन का उत्पादन कर सकता है। वहाँ आपके डेटाबेस में किसी भी तरह से पहुंचने की कोशिश कर रहे बहुत से लोग हैं ... उनमें से कुछ बस मस्ती के लिए।

किसी भी स्थिति में, आपको हमेशा उपलब्ध सबसे सुरक्षित विधियों का उपयोग करना चाहिए। इसमें प्रवेश करने की एक अच्छी आदत है।

इसके अलावा, आपको कभी भी अपने वेब एप्लिकेशन में रूट पासवर्ड का उपयोग करना चाहिए। न्यूनतम विशेषाधिकारों वाला एक विशेष उपयोगकर्ता बनाएं।

पीएचपी के लिए मैं हमेशा एक .ini फ़ाइल का उपयोग संवेदनशील विन्यास स्टोर करने के लिए ...

<?php 
    $config = parse_ini_file('../config.ini'); 
?> 
+2

विस्तृत करें। –

+1

क्या आप व्यक्तिगत वरीयता के लिए एक आईएनआई फ़ाइल का उपयोग करते हैं या क्या कोई विशिष्ट कारण है? –

+0

.ini फ़ाइलों को स्टार्टअप पर PHP द्वारा लोड किया जाता है और जानकारी प्रक्रिया के पूरे जीवन में बरकरार रखी जाती है। इसके अलावा, यह एक व्यक्तिगत वरीयता है। चूंकि .ini फ़ाइलें PHP के मूल हैं (जावास्क्रिप्ट और JSON सोचें) वे केवल कॉन्फ़िगरेशन विकल्पों के लिए समझ में आती हैं। –

2

अंदर क्या www निर्देशिका है क्योंकि (यानी अपनी वेबसाइट की जड़) इंटरनेट से संभावित सुलभ हो सकता है।

इसका मतलब है कि यदि आप यहां अपने क्रेडेंशियल्स डालते हैं, तो शायद कोई उन्हें एक्सेस कर पाएगा, और सीधे आपके डीबी से कनेक्ट होगा।

इस निर्देशिका के बाहर अपने क्रेडेंशियल डालकर गारंटी देता है कि यह इस तरह से पहुंच योग्य नहीं होगा।