2013-02-21 14 views
5

फिलहाल मैं इसे इस तरह करने के लिए प्रत्यक्ष स्क्रिप्ट पहुँच ब्लॉक करना:एक फ़ाइल

एक फाइल में, की सुविधा देता है इसे कहते file_one.php, मैं

define('ROOT', realpath(dirname(__FILE__))); 

require_once(ROOTPATH . '/file_two.php'); 

है और file_two.php में मैं तो इस राशि शीर्ष:

if (! defined('ROOT')) 
    exit; 

तो file_two.php की सामग्री को केवल तभी ROOT, परिभाषित किया गया है जो file_one.php में होता पहुँचा जा सकता है। यदि आप सीधे file_two.php तक पहुंचने का प्रयास करते हैं तो यह काम नहीं करेगा, क्या यह सही है? क्या इस विधि में कोई दोष है?

+5

यदि संभव हो तो इसे वेब्रॉट के बाहर रखना भी एक बेहतर विचार है –

+0

इस प्रकार कोडइग्निटर ऐसा करने लगता है, इसलिए अधिकतर सुरक्षित होना चाहिए। हालांकि मैं उपर्युक्त पद से सहमत हूं कि यदि यह एक मुद्दा है, तो इसे केवल डॉक्रूट से बाहर ले जाएं –

उत्तर

1

परिवर्तित एक जवाब के लिए जॉन कोंडे की टिप्पणी:

सबसे अच्छा तरीका है एक फ़ाइल सुनिश्चित करने के लिए एक ब्राउज़र में पहुँचा नहीं जा सकता यह webroot बाहर रख कर है।

आपको लगता है कि आपकी वेबसाइट के फ़ाइलें हैं www या public_html या इसी तरह के नाम का एक फ़ोल्डर, होना चाहिए। खैर, उस फ़ोल्डर में, आप includes फ़ोल्डर डाल सकते हैं और वहां अपनी स्क्रिप्ट-एक्सेस-केवल फाइलें रख सकते हैं। इस तरह, वे वेब से पूरी तरह से पहुंच योग्य नहीं हैं, लेकिन स्क्रिप्ट अभी भी उन्हें प्राप्त कर सकते हैं।

1

यह ठीक है जैसा आप कहते हैं। अगर कोई ब्राउज़र /../../file_two.php में सीधे टाइप करता है तो यह बाहर निकल जाएगा। जब फ़ाइल स्वतंत्र रूप से लोड की जाती है, इसमें शामिल किए बिना, रूट परिभाषित नहीं किया जाता है।

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

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

  • कोई संबंधित समस्या नहीं^_^