IIS7: web.config फ़ाइल के साथ पहुँच को कैसे अवरुद्ध करें?


14

मुझे पता है कि IIS7 मुझे web.config xml फ़ाइल के साथ प्रति निर्देशिका कॉन्फ़िगरेशन की अनुमति देता है। मेरे पास कुछ कॉन्फ़िगरेशन फ़ाइलों के साथ एक निर्देशिका है जो वेब एक्सेस नहीं करना चाहती है। एक स्थानीय web.config फ़ाइल को पढ़ने के लिए मना करना एक अच्छा समाधान होगा।

फ़ाइलों तक वेब पहुंच को रोकने के लिए web.config फ़ाइल की सामग्री क्या होनी चाहिए?

संपादित करें: मैं एक फ़ाइल में इन सामग्रियों के साथ web.config फ़ाइल डालने का प्रयास कर रहा हूं:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
            <system.web>
                    <authorization>
                            <deny users="*" /> <!-- Denies all users -->
                    </authorization>
            </system.web>
</configuration>

लेकिन मैं अभी भी डायरेक्ट्री के अंदर किसी फाइल को एक्सेस कर सकता हूं। इसके साथ गलत क्या है? मैं कैसे डिबग करूं?

जवाबों:


12

आप system.web का उपयोग कर रहे हैं। IIS7 में, आपको इसके बजाय system.webServer का उपयोग करना चाहिए। यह सभी प्रकार की फ़ाइलों को अवरुद्ध करेगा, न कि केवल ASP.NET फाइलें। उदाहरण के लिए, आप jpg, gif, txt और सभी प्रकार की फ़ाइलों की सुरक्षा कर सकते हैं।

यह कुछ इस तरह दिखेगा:

  <system.webServer>
      <security>
          <authorization>
              <remove users="*" roles="" verbs="" />
              <add accessType="Allow" roles="Administrators" />
          </authorization>
      </security>
  </system.webServer>

और अगर आप इसे सिर्फ 1 फ़ाइल के लिए सेट करना चाहते हैं:

 <location path="dontlook.jpg">
     <system.webServer>
         <security>
             <authorization>
                 <remove users="*" roles="" verbs="" />
                 <add accessType="Allow" roles="Administrators" />
             </authorization>
         </security>
     </system.webServer>
 </location>

मैं एक साल बाद अपने स्वयं के जवाब में भाग गया और एक अतिरिक्त नोट जोड़ना चाहता था। आपको यह सुनिश्चित करना होगा कि या तो फ़ॉर्म या विंडोज़ ऑर्टॉर भी सक्षम हैं, अन्यथा केवल हटाने का नियम मददगार होगा। यदि आपने Windows प्रमाणीकरण सक्षम किया है, तो आपको अपने क्रेडेंशियल दर्ज करने के लिए प्रेरित किया जाएगा।
स्कॉट फोर्सिथ -

अंत में +1! इसे खोजने में 3 घंटे का समय लगा! धन्यवाद
hofnarwillie

5

मुझे लगता है कि यह आपकी समस्या को हल कर सकता है।
इस web.config को उस निर्देशिका में रखें जिसमें लक्ष्य निर्देशिका है:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="target directory name"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

2
क्या आप इसे उत्तर के रूप में प्रस्तुत करने से पहले सत्यापित कर सकते हैं।
जेम्स ए मोह्लर

यह मेरे लिए काम करता है। इसके अलावा, ध्यान दें कि आप एक खंड के रूप में एक फ़ाइल नाम रख सकते हैं।
सोहने

4

आप Web.config पर स्थान नोड का उपयोग कर सकते हैं। यहाँ msdn पर एक विस्तृत विवरण दिया गया है ; संक्षेप में:

<location path="Subdirectory">
    <system.web>
        <authorization>
            <deny users="*"/> <!-- Denies all users -->
        </authorization>
    </system.web>
</location>
<location path="Public_Directory">
    <system.web>
        <authorization>
            <allow users="*"/> <!-- Allows all users -->
        </authorization>
    </system.web>
</location>

आप भी उपयोग कर सकते हैं? वाइल्डकार्ड यह निर्दिष्ट करने के लिए कि आपको अनाम उपयोगकर्ताओं को (अनुमति / अस्वीकार) करना चाहिए


यह फ़ाइल वर्तमान निर्देशिका तक पहुँच को कैसे अवरुद्ध करेगी, लेकिन "सीएसएस" निर्देशिका को अनुमति देती है? यह चारों ओर <कॉन्फ़िगरेशन> टैग गायब है।
नवरात्रि

आपका अनुमति केवल प्रमाणित उपयोगकर्ताओं को अनुमति देता है। यदि आप अनधिकृत उपयोगकर्ता चाहते हैं, तो आपको उपयोगकर्ताओं को अनुमति देना शामिल करना चाहिए = "?" भी।
निसान फैन

0
  • * हर उपयोगकर्ता में लॉग इन का मतलब है।
  • ? अनाम उपयोगकर्ताओं का मतलब है।

आपको अवश्य उपयोग करना चाहिए ?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.