htaccess द्वारा किसी फ़ोल्डर और फ़ाइल तक सीधी पहुँच से इनकार करना


134

यहाँ परिदृश्य है:

  • index.phpरूट फोल्डर में एक फाइल होती है
  • कुछ फाइलें शामिल हैं index.phpजिसमें includesफ़ोल्डर में हैं।
  • 1 अन्य फ़ाइल ( submit.php) फॉर्म सबमिट एक्शन के लिए रूट फ़ोल्डर में है।

मैं includeshtaccess द्वारा फ़ोल्डर में सीधे उपयोगकर्ता की पहुंच को प्रतिबंधित करना चाहता हूं । के लिए भी submit.php। लेकिन index.phpफ़ाइल के लिए काम करेंगे शामिल हैं । जैसे, यदि उपयोगकर्ता टाइप करते हैं www.domain.com/includes/somepage.php, तो वह इसे प्रतिबंधित कर देगा (त्रुटि पृष्ठ पर पुनर्निर्देशित किया जा सकता है)।

जवाबों:


266

मैं बस includesफ़ोल्डर को वेब-रूट से बाहर ले जाऊंगा, लेकिन यदि आप संपूर्ण includesफ़ोल्डर तक सीधी पहुंच को अवरुद्ध करना चाहते हैं, तो आप .htaccessउस फ़ोल्डर में एक फ़ाइल डाल सकते हैं जिसमें बस शामिल है:

deny from all

इस तरह आप उस फ़ोल्डर से कोई फ़ाइल नहीं खोल सकते, लेकिन आप उन्हें बिना किसी समस्या के php में शामिल कर सकते हैं।


7
क्या अन्य फ़ाइल उस फ़ोल्डर में मौजूद फ़ाइल के लिए अजाक्स अनुरोध करने में सक्षम होगी?
चैतन्य चंदुरकर

16
@ChaitanyaChandurkar नहीं, अजाक्स अनुरोध एक सामान्य http अनुरोध है जिससे इनकार किया जाएगा।
जीरोएन

Sr b / c I नई वेब प्रोग्रामिंग। मैं अपनी फ़ाइल index.php तक पहुंच के लिए अपवाद कैसे जोड़ सकता हूं?
फतहवी

मैं सभी से इनकार करता था और इसने हर url को प्रतिबंधित कर दिया था .. यहां तक ​​कि लॉगिन पृष्ठ भी नहीं दिखाया गया: ..
Aamir

@ आमिर यह सही है, उस फ़ोल्डर में कोई भी यूआरएल सुलभ नहीं होगा लेकिन आप उन्हें बिना किसी समस्या के अन्य फाइलों में शामिल कर सकते हैं।
जीरो

56

यह शुद्ध mod_rewriteआधारित समाधान है:

RewriteRule ^(includes/|submit\.php) - [F,L,NC]

यह उपयोग करने के लिए निषिद्ध त्रुटि दिखाएगा यदि यूआरआई शामिल है /includes/या/submit.php


3
सबमिट की गई फ़ाइल को संबोधित करने वाला अच्छा काम
CTS_AE

29

फ़ाइलों के निर्देश का उपयोग करना और सभी फ़ाइलों तक पहुंच को अस्वीकार करना संभव है, फिर उन फ़ाइलों को सेट करने के लिए फिर से उपयोग करें जो सुलभ हैं:

<Files ~ "^.*">
  Deny from all
</Files>

<Files ~ "^index\.php|css|js|.*\.png|.*\.jpg|.*\.gif">
  Allow from all
</Files>

7
मैं उस व्यक्ति के बारे में निश्चित नहीं हूं जिसने सवाल पोस्ट किया कि उसकी समस्या हल हुई या नहीं, लेकिन यह एसओ की सुंदरता है कि कई उत्तर बहुत सारे सदस्यों की मदद कर सकते हैं। इस आखिरी जवाब ने मेरी समस्या हल कर दी। मैं साइटों को सीएसएस फ़ाइल प्राप्त करना चाहता हूं, लेकिन ttf या otf फोंट, और बूम तक कोई पहुंच नहीं है! संकल्प लिया।
मोक्सेट खान

इसके बाद मैं सबफ़ोल्डर्स में फ़ाइलों तक पहुँचने के लिए
abel

14

1 लाइनर mod_alias आधारित समाधान:

RedirectMatch 403 ^/folder/file.php$

यह /folder/file.php के लिए निषिद्ध त्रुटि दिखाएगा


1
+1 - यह वास्तव में बहुत अच्छा है, क्योंकि कोई भी यह नहीं देख सकता है कि यदि रेगेक्स का उपयोग करके आप संपूर्ण फ़ोल्डर में 404 को लागू करते हैं, तो कौन सी फाइलें मौजूद हैं ^folder
bytecode77

9

अगर मैं सही ढंग से समझूं तो आप केवल शामिल फ़ोल्डर तक पहुंच से इनकार करना चाहते हैं?

शामिल फ़ोल्डर में 'DENY FROM ALL' निर्देश के साथ .htaccess ट्रिक करेगा।


8

आपका क्यू दो भागों में आता है, दोनों जीरो और शुभ के समाधान भाग I के लिए काम करते हैं - पहुंच / शामिल करने से इनकार करते हैं। शुभ का भाग II के लिए भी काम करता है। मैं बाद को पसंद करता हूं क्योंकि मैं DOCROOT/.htaccessवैसे भी उपयोग करता हूं और यह एक फाइल में इस तरह के सभी नियंत्रण रखता है।

हालाँकि, जो मैं चर्चा नहीं करना चाहता था वह "पहुंच से वंचित करना submit.php" की अवधारणा है । यदि आप उपयोग नहीं करना चाहते हैं submit.phpतो DOCROOT में क्यों है? मुझे संदेह है कि इसका उत्तर यह है कि आप इसे कुछ रूपों में एक एक्शन टारगेट के रूप में उपयोग करते हैं और केवल यह चाहते हैं कि फॉर्म जमा होने पर इसे निकाल दिया जाए और सीधे नहीं, उदाहरण के लिए स्पैम्बोट से।

अगर यह सच है तो आप शुभ के भाग II का उपयोग नहीं कर सकते क्योंकि इससे आपका फॉर्म फेल हो जाएगा। आप यहाँ क्या कर सकते हैं (i) .htaccessचेक के साथ यह सुनिश्चित करने के लिए कि संदर्भकर्ता आपका अपना सूचकांक पृष्ठ था:

RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php   [NC]
RewriteRule ^submit\.php$    -                                   [F]

और (ii) आपके PHP index.php फॉर्म जनरेटर के भीतर एक टाइमस्टैम्प और सत्यापन के लिए कुछ छिपे हुए फ़ील्ड शामिल हैं। मान्यता, कह सकती है, टाइमस्टैम्प के एमडी 5 के पहले 10 चार्ट और कुछ आंतरिक रहस्य। सबमिट करने की प्रक्रिया पर आप (i) मान्य कर सकते हैं कि टाइमस्टैम्प और सत्यापन मैच, और (ii) टाइमस्टैम्प वर्तमान समय के 15 मिनट के भीतर है।

यह आप स्पैमिंग को केवल व्यावहारिक तरीके से रोक सकते हैं कि एक स्पैमर को एक वैध टाइमस्टैम्प / सत्यापन जोड़ी मिल सकती है जो एक फॉर्म को पार्स करने के लिए होगी, लेकिन इस स्क्रैप में केवल 15 मिनट का जीवन होगा।


6

उच्च स्तर पर सेट किए गए संभावित अन्य विकल्पों के आधार पर आपको अपनी .htaccess फ़ाइल में निम्नलिखित शामिल करने की आवश्यकता हो सकती है:

Satisfy all
Order deny,allow
Deny from all

जब ऊपरी निर्देशिका ने मूल प्रमाणीकरण को लाइन सहित परिभाषित किया तो मैं इसमें भाग गया:

Satisfy any

यह मेरे इनकार को सभी को प्रभावी होने से रोक रहा था क्योंकि उपयोगकर्ताओं को प्रमाणित किया गया था।


1

आप .htaccessफाइल करने के लिए नीचे कमांड जोड़ सकते हैं

Deny from all
ErrorDocument 403 "nothing is here"

यह अनधिकृत पहुंच के मामले में "यहां कुछ भी नहीं है" संदेश प्रदर्शित करेगा।

यदि आप एक त्रुटि कोड द्वारा एक निश्चित पृष्ठ पर पुनर्निर्देशित करना चाहते हैं तो आप एक कमांड को निम्नानुसार परिभाषित कर सकते हैं:

ErrorDocument 404 "/errors/404.html"

यह /errors/404.htmlकस्टम पृष्ठ को स्क्रीन नहीं मिली और दिखाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.