2010-10-27 42 views

回答

22

正确的方式做到这一点是使用这样的:

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

这允许您仍然可以访问位于那里从IUSR帐户文件,但是阻止了对那里的文件的实际请求被直接填充。

请注意,这将阻止该目录中的文件以及任何子目录,无论该目录出现在哪里 - 即使它本身是其他目录的子目录。

+0

上述代码应放置在与要拒绝访问的目录相同的目录中的web.config文件中。我测试过把它放在我的根级web.config中,它阻止了对整个站点的访问。把它放在同一目录下的一个单独的web.config文件中,当试图访问该目录时会返回404错误(尽管我确定它返回的错误类型可以在IIS中更改)。 – Tiffany 2017-08-17 15:41:33

1

从该文件夹中删除IIS_IUSR权限。

我认为它一般下的“Internet来宾帐户”

+3

如果你这样做您可能也会阻止任何通过Web应用程序访问这些文件的功能,这可能不是您想要的功能。 – 2010-10-27 23:38:04

+0

我删除IIS_IUSR将工作在我的情况下,我想保存在那里用户上传,现在我将它们保存在C:驱动器上的网站文件夹外的某个位置,并且此上传文件夹没有IIS_IUSR权限,我仍然可以从我的网站代码访问它。 – 2010-10-27 23:57:35

2

正如链接唯一的答案指出,hiddenSegments是适合这项工作的工具。转到IIS,然后siteFeatures找到Request Filtering(必须安装在Server Manager)现在添加您想阻止访问的目录名称,或者真正的URL的任何部分。这种方法确实需要一个唯一的URL或目录名的网站URL中任何级别上,这个段的其他任何可以发生,将导致该请求被阻止:

http://www.iis.net/configreference/system.webserver/security/requestfiltering/hiddensegments

相关问题