【问题标题】:Hidden Segments Not working when added via web.config通过 web.config 添加时隐藏段不起作用
【发布时间】:2013-10-29 06:35:20
【问题描述】:

我正在尝试保护我的 MVC 应用程序,并且我想对 url 嗅探器隐藏标准文件夹结构。

例如。我有一个 Controllers 文件夹。如果我尝试通过

到达它

http://www.myDomain.com/Controllers

我收到一个 403.14 状态码。如果我做一个不存在的目录:

http://www.myDomain.com/NonExistantDirectory

我得到一个 404。

我想隐藏这些标准的 mvc 目录,这样你就不能进行目录嗅探了。 所以这是我的问题:我可以通过 IIS 添加隐藏的部分,然后得到我想要的 404 响应,但是当我将以下 xml 添加到我的 web 配置中时,我仍然得到 403.14 状态代码.

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

任何原因这种添加隐藏段的方式不起作用,但手动操作可以吗? (注意:我正在使用 IIS 8 运行窗口 8)

【问题讨论】:

  • 当您发布到 Web 服务器时,这些 MVC 目录在 Web 服务器上不存在。控制器目录下的所有代码都编译到 bin/{project}.dll 中。该目录显示的唯一原因是因为您将其中的文件设置为“内容”。
  • 谢谢 Tommy,我忘记了当我使用指向我的 dev 文件夹的 IIS 运行时,部署的代码不包括这些文件夹,所以我不会得到 403。谢谢。

标签: asp.net-mvc iis


【解决方案1】:

确保您在 IIS 集成 IIS 管道模式下运行应用程序,该模式使用 &lt;system.webServer&gt; 部分而不是 &lt;system.web&gt;。例如,如果您在 Visual Studio 中运行此程序,请确保您已将应用程序托管在 IIS Express 而不是内置的 Cassini Web 服务器中。另一方面,如果您将应用程序托管在真正的 IIS Web 服务器中,请确保应用程序池使用的是集成管道模式,而不是经典管道模式。

【讨论】:

  • 我已经验证,我正在为我的 AppPool 使用集成模式,结果仍然相同 :(。我也在“使用本地 iis Web 服务器”模式下运行项目。
  • 我什至重新启动了 IIS,但我仍然看到这个问题。
猜你喜欢
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 2015-03-10
  • 2021-11-24
相关资源
最近更新 更多