2010-06-14 9 views
9

मैंने कुछ या सभी php को स्टोर करने के लिए अनुशंसाओं को देखा है, फ़ाइलों को वेब दस्तावेज़ रूट निर्देशिका (मेरे मामले में उपयोगकर्ता नाम/public_html) के अलावा कुछ अन्य जगहों को संवेदनशीलता के साथ php फ़ाइलों की सुरक्षा के विशिष्ट कारण के लिए कुछ अन्य स्थान शामिल हैं जानकारी (जैसे डेटाबेस कनेक्शन और लॉगिन जानकारी) वेब सर्वर हिचकी और php फ़ाइलों की सुरक्षा रोकता है और वे बाहरी लोगों को 'दृश्यमान' बन जाते हैं जो जानते हैं कि कहां देखना है।वेब रूट के बाहर स्क्रिप्ट फाइलों को संग्रहीत करना

ऐसा लगता है कि यह मेरे लिए कुछ हद तक पागल है, लेकिन मुझे लगता है कि लोगों ने इससे पहले बुरी तरह जला दिया है इसलिए मैं साथ जाने के लिए तैयार हूं। सुझाव आमतौर पर '../include_files/' जैसी फ़ाइलों को शामिल करने का रूप लेता है, इसलिए यह सीधे दस्तावेज़ रूट में नहीं है और वेब सर्वर के माध्यम से बाहरी लोगों तक सीधे पहुंच योग्य नहीं है।

मेरा प्रश्न यह है: क्या इस तरह के बीच सुरक्षा में एक महत्वपूर्ण अंतर है और बस अपनी 'include_files' निर्देशिका को दस्तावेज़ रूट के नीचे डालने और वहां एक .htaccess फ़ाइल चिपकाने (उचित प्रविष्टियों के साथ) चिपका रहा है? '../include_files/' में .htaccess फ़ाइल डालने से कोई महत्वपूर्ण सुधार होगा?

TIA,

मोंटे

उत्तर

13

.htaccess का उपयोग ओवरहेड जोड़ता है क्योंकि अपाचे के पास एक और आइटम है जिसे इसे जांचने और संसाधित करने की आवश्यकता होती है।

वेब रूट से फ़ाइलों को रखना खतरनाक नहीं है, यह अच्छा अभ्यास है। क्या होता है यदि कोई व्यक्ति "शामिल" फ़ाइलों में से किसी एक को सीधे एक्सेस करता है और यह त्रुटियों को प्रकट करता है क्योंकि सभी पूर्व-आवश्यक फ़ाइलों को लोड नहीं किया गया था?

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

+0

+1 .htaccess के प्रदर्शन नकारात्मक बिंदु को इंगित करने के लिए +1 (यदि आप किसी भी को अनुमति नहीं देते हैं, तो अपाचे फ़ाइल को भी नहीं देखता है)। फ़ाइलों को रूट रूट से बाहर रखने के संबंध में आपके अन्य बिंदुओं से सहमत हैं; इसे स्थापित करने में कुछ मिनट लगते हैं (विशेष रूप से __autoload/spl_autoload_register के साथ), तो ऐसा क्यों नहीं करते? –

+0

समस्या यह है: आप इसे कई/सबसे साझा होस्टिंग में नहीं कर सकते हैं। नहीं? – docesam

+0

मेरे अनुभव में साझा मेजबान आपको उसमें एक www निर्देशिका के साथ एक निर्देशिका देते हैं जो सार्वजनिक के रूप में सेट है। –

4

यह वास्तव में क्या आप अपने include_files में है पर निर्भर करता है। सबसे महत्वपूर्ण बात यह है कि आप दस्तावेज़ रूट (डेटाबेस लॉग इन, आदि) के बाहर आपके पास कोई भी प्रमाण-पत्र डालते हैं। बाकी सब कुछ वास्तव में माध्यमिक है और इससे कोई फर्क नहीं पड़ता।

आप किसी को भी अपने स्रोत कोड चोरी तो Zend परंपराओं का पालन करने की कोशिश नहीं करना चाहते हैं: public को

application 
library 
public 

DocumentRoot अंक और कहा कि सिर्फ मीडिया फ़ाइलें, जे एस/सीएसएस फ़ाइलें हैं। एचटीएमएल/विचार, डीबी तर्क, conf/credentials application में हैं। तीसरे पक्ष के पुस्तकालय library में हैं।

0

सैद्धांतिक रूप से, यदि आप फ़ोल्डर में एक .htaccess फ़ाइल चिपकते हैं, तो आपके पास अभी भी .php फ़ाइलों को सीधे कॉल किया जा सकता है।

उन्हें सर्वर रूट से बाहर ले जाना; हालांकि, उन्हें आपकी वेबसाइट ब्राउज़ करने वाले किसी व्यक्ति द्वारा कभी तक पहुंचने से रोकता है।

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