使用 Web.config 阻止对子目录的访问

使用 Web.config 阻止对子目录的访问

我的 ASP.NET 项目中有一个包含实用文件的子目录。代码在运行时需要它们,但我不希望它们在网络上可见。

Web.config 文件中用于阻止所有用户访问单个子目录及其所有内容的语法是什么?

答案1

IIS 7 有一个新的“请求过滤”功能。您可能希望使用隐藏段配置:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="BIN"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

这导致http://你的站点/bin无法使用(但http://你的站点/binary仍然有效)

查看: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering

答案2

您的问题是,如果 IIS 只是返回文件,ASP.Net 将永远没有机会进行干预。我相信可以通过启用基于表单的身份验证和大量混乱来实现这一点,但我只会将文件移出 wwwroot 文件夹。

JR

答案3

这应该有效:

<configuration>
  <location path="FolderName">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

答案4

这是一个老问题,但这是一个适用于 Web 服务器路径中任何目录的简单插件web.config。它会删除所有用户角色,然后将默认访问权限设置为拒绝。简单且无需配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
            <authorization>
                <remove users="*" roles="" verbs="" />
                <add accessType="Deny" users="*" />
            </authorization>
        </security>
    </system.webServer>
</configuration>

相关内容