2012-07-30 10 views
78

मैं निम्नलिखित .htaccess फाइल है:.htaccess में एक फ़ाइल में पहुंचने से रोका कैसे

RewriteEngine On 
RewriteBase/

# Protect the htaccess file 
<Files .htaccess> 
Order Allow,Deny 
Deny from all 
</Files> 

# Protect log.txt 
<Files ./inscription/log.txt> 
Order Allow,Deny 
Deny from all 
</Files> 

# Disable directory browsing 
Options All -Indexes 

मैं निम्नलिखित फ़ाइल तक पहुँचने का आगंतुकों न करे कोशिश कर रहा हूँ:

domain.com/inscription/log.txt 

लेकिन मैं क्या उपर्युक्त काम नहीं करता है: मैं अभी भी ब्राउज़र से दूरस्थ रूप से फ़ाइल तक पहुंच सकता हूं।

उत्तर

137

एक htaccess फ़ाइल के भीतर, <Files> निर्देश के दायरे केवल उस डायरेक्टरी (मैं भ्रम से बचने के लिए जब उपनिर्देशिका की htaccess में नियम/निर्देशों माता पिता से अधिक्रमित वाले आवेदन किया हो लगता है) पर लागू होता है।

तो तुम हो सकता है:

<Files "log.txt"> 
Order Allow,Deny 
Deny from all 
</Files> 

एक htaccess फ़ाइल में अपने inscription निर्देशिका में। या फिर आप एक तरह से संभाल करने के लिए दोनों ही मामलों htaccess फ़ाइल में पहुंचने से रोका log.txt के साथ ही mod_rewrite का उपयोग कर सकते हैं:

RewriteRule /?\.htaccess$ - [F,L] 

RewriteRule ^/?inscription/log\.txt$ - [F,L] 
+0

यदि आपका IIS का उपयोग, बजाय web.config फ़ाइल में करते हैं। –

+0

पुनर्लेखन नियमों का उपयोग * .txt की सामग्री तक पहुंचने से अपना कोड अस्वीकार करता है। आप इसके आसपास कैसे पहुंचेंगे? – Pantss

+3

" का दायरा 'निर्देश केवल उस निर्देशिका पर लागू होता है" - नहीं, यह नहीं करता है। यह उस निर्देशिका पर लागू होता है _and_ इसके नीचे सभी उपनिर्देशिकाएं। तो '<फ़ाइलें" log.txt ">' '/ log.txt' _and_'/शिलालेख/log.txt' को पकड़ लेगा। – MrWhite

13

मिलान मजबूत पैटर्न - इस विधि है कि मैं खराब होने प्रेस में यहाँ का उपयोग करें। मजबूत पैटर्न मिलान का उपयोग करके, यह तकनीक ".hta", एचटीए "या किसी भी केस-असंवेदनशील संयोजन वाली किसी भी फ़ाइल में बाहरी पहुंच को रोकती है। इसे समझने के लिए इस कोड को निम्नलिखित अनुरोधों में से किसी के माध्यम से पहुँच को रोकने जाएगा:

  • .htaccess
  • .htaccess
  • .htaccess
  • testFILE.htaccess
  • filename.HTACCESS
  • FILEROOT। एचटीएसीसीईएस

.. आदि, स्पष्ट रूप से, यह विधि अत्यधिक प्रभावशाली है आपकी साइट की HTAccess फ़ाइलों को सुरक्षित करने पर है। इसके अलावा, इस तकनीक में फोर्टिफाइंग "सभी" निर्देश को संतुष्ट भी शामिल है। ध्यान दें कि यह कोड आपके डोमेन की रूट HTAccess फ़ाइल में रखा जाना चाहिए:

# STRONG HTACCESS PROTECTION 
<Files ~ "^.*\.([Hh][Tt][Aa])"> 
order allow,deny 
deny from all 
satisfy all 
</Files> 
+0

इस कोड का उपयोग करते समय मुझे 500 आंतरिक सर्वर त्रुटि मिलती है। कोई विचार क्यों? मैं वर्डप्रेस का उपयोग कर रहा हूँ। –

+3

क्या उपयोगकर्ताओं को डॉटफाइल तक पहुंचने से नकारने के लिए और अधिक समझदारी नहीं होगी? '' जैसे कुछ का उपयोग करना। –

7

मुझे विश्वास नहीं है कि वर्तमान में स्वीकृत उत्तर सही है।

<Files "reminder.php"> 
require all denied 
require host localhost 
require ip 127.0.0.1 
require ip xxx.yyy.zzz.aaa 
</Files> 

यह reminder.php तक बाहरी पहुंच जो एक उपनिर्देशिका में है रोकता है: उदाहरण के लिए, मैं एक आभासी सर्वर के रूट में निम्नलिखित .htaccess फ़ाइल (अपाचे 2.4) है। मैं एक ऐसी ही .htaccess ही प्रभाव के साथ अपने अपाचे 2.2 सर्वर पर फ़ाइल है:

<Files "reminder.php"> 
     Order Deny,Allow 
     Deny from all 
     Allow from localhost 
     Allow from 127.0.0.1 
    Allow from xxx.yyy.zzz.aaa 
</Files> 

मैं निश्चित रूप से पता नहीं है, लेकिन मुझे लगता है यह .htaccess फ़ाइल में विशेष रूप से उप-निर्देशिका परिभाषित करने के लिए प्रयास है, अर्थात<Files ./inscription/log.txt> जो इसे विफल कर रहा है। यानी log.txt यानी फ़ाइल को उसी निर्देशिका में डालना आसान होगा।inscription निर्देशिका में और यह वहां काम करेगा।

+0

आपको मेरा अपवॉट मिलता है, यह मेरे अपाचे 2.4 के लिए भी काम करता है। – Tschallacka

0

प्लेस अपनी .htacces फ़ाइल में नीचे लाइन और फ़ाइल नाम की जगह आप

RewriteRule ^(test\.php) - [F,L,NC] 
-2

वैसे आप उदाहरण के लिए <Directory> टैग इस्तेमाल कर सकते हैं इच्छा के रूप में:

<Directory /inscription> 
    <Files log.txt> 
    Order allow,deny 
    Deny from all 
    </Files> 
</Directory> 

./ का उपयोग न करें क्योंकि अगर आप / का उपयोग करते हैं तो यह आपकी साइट की मूल निर्देशिका को देखता है।

एक अधिक विस्तृत उदाहरण यात्रा के लिए http://httpd.apache.org/docs/2.2/sections.html

+1

लेकिन '.htaccess' में '' कंटेनर की अनुमति नहीं है। '.htaccess' में, '.htaccess' फ़ाइल स्वयं" _Directory_ कंटेनर "(प्रति-निर्देशिका कॉन्फ़िगरेशन फ़ाइल) है। – MrWhite

+0

ठीक है तो आप रीडायरेक्ट का उपयोग कर सकते हैं। 'रीडायरेक्ट /inscription/log.txt access_denied.html' यदि उपयोगकर्ता शिलालेख निर्देशिका में 'शिलालेख/log.txt' पर जाता है तो यह उपयोगकर्ता को access_denied.html' पर रीडायरेक्ट करेगा। –

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