【问题标题】:How to make IIS7 stop serving a folder?如何让 IIS7 停止服务文件夹?
【发布时间】:2011-05-01 14:42:11
【问题描述】:

我知道默认情况下 IIS 不会将 App_Data 或 bin 文件夹内容提供给公众。
如何再设置一个文件夹不公开?

【问题讨论】:

    标签: iis-7


    【解决方案1】:

    正如仅链接的答案所指出的那样,hiddenSegments 是适合这项工作的工具。转到IIS,然后在siteFeatures 中找到Request Filtering(必须安装在Server Manager)现在添加您要阻止访问的目录名称,或任何URL 段。这种方法确实需要在站点中使用唯一的 url 或目录名称,否则 url 中任何级别的任何其他段的出现都会导致该请求被阻止:

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

    【讨论】:

      【解决方案2】:

      正确的做法是使用这个:

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

      这使您仍然可以从IUSR 帐户访问位于那里的文件,但会阻止直接填写对那里的文件的实际请求。

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

      【讨论】:

      • 以上代码应放在与您要拒绝访问的目录相同的目录中的 web.config 文件中。我测试将它放在我的根级别 web.config 中,它阻止了对整个站点的访问。尝试访问该目录时,将其放在同一目录中的单独 web.config 文件中会返回 404 错误(尽管我确信它返回的错误类型可以在 IIS 中更改)。
      • 最明显,但是..“My_Directory”不是字面意思,应该是您的目录名称!
      【解决方案3】:

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

      我认为它通常在“Internet 访客帐户”下

      【讨论】:

      • 如果你这样做,你也可能完全阻止通过网络应用程序访问这些文件的任何能力,这可能不是预期的。
      • 我删除 IIS_IUSR 将在我的情况下工作,我想保存用户上传的内容,现在我将它们保存在 c: 驱动器上网站文件夹之外的某个位置,而这个上传文件夹没有拥有 IIS_IUSR 权限,我仍然可以从我的网站代码访问它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 2017-03-17
      相关资源
      最近更新 更多