IIS7:如何使用 web.config 文件阻止访问?

IIS7:如何使用 web.config 文件阻止访问?

我知道 IIS7 允许我使用 web.config xml 文件对每个目录进行配置。我有一个目录,其中包含一些不希望通过 Web 访问的配置文件。禁止对它的读取访问的本地 web.config 文件将是一个不错的解决方案。

要禁止 Web 访问文件,web.config 文件的内容应该是什么?

编辑:我正在尝试将包含以下内容的 web.config 文件放入一个文件中:

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

但我仍可以直接访问目录中的文件。这有什么问题?我该如何调试发生的情况?

答案1

您使用的是 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>

答案2

我认为这可以解决您的问题。
将此 web.config 放在包含目标目录的目录中:

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

答案3

您可以使用 Web.config 上的 Location 节点。以下是有关微软; 简而言之:

<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>

您还可以使用 ? 通配符来指定是否应(允许/拒绝)匿名用户

答案4

  • *表示每个登录的用户。
  • ?指匿名用户。

您必须使用?

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

相关内容