【问题标题】:Disable HTTP OPTIONS, TRACE, HEAD, COPY and UNLOCK methods in IIS在 IIS 中禁用 HTTP OPTIONS、TRACE、HEAD、COPY 和 UNLOCK 方法
【发布时间】:2012-08-26 15:18:01
【问题描述】:

出于安全原因,我想通过应用程序级别禁用这些方法 所以我有这个web.config 文件:

<configuration>
    <location path="index.php">
    <system.webServer>
                <directoryBrowse enabled="false" />
    </system.webServer>

    <system.web>
        <authorization>
            <deny verbs="OPTIONS" users="*" />
            <deny verbs="TRACE" users="*" />
            <deny verbs="HEAD" users="*" />
            <deny verbs="PROPFIND" users="*" />
            <deny verbs="COPY" users="*" />
            <deny verbs="LOCK" users="*" />
            <deny verbs="UNLOCK" users="*" />
            <deny verbs="PROPPATCH" users="*" />
            <deny verbs="MKCOL" users="*" />
            <deny verbs="MOVE" users="*" />
            <deny verbs="DELETE" users="*" />
        </authorization>
    </system.web>

  </location>
</configuration>

但这不起作用 - 有什么想法吗?

【问题讨论】:

    标签: iis web-config


    【解决方案1】:

    最后我找到了这个问题的另一个答案。这对我有用。只需将以下数据添加到您的 webconfig 文件中。

    <configuration>
     <system.webServer>
      <security>
       <requestFiltering>
        <verbs allowUnlisted="true">
         <add verb="OPTIONS" allowed="false" />
        </verbs>
       </requestFiltering>
      </security>
     </system.webServer>
    </configuration>
    

    更多信息,您可以访问本网站:http://www.iis.net/learn/manage/configuring-security/use-request-filtering

    如果你想测试你的网站,它是否工作...你可以使用“HttpRequester” mozilla firefox 插件。对于这个插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/

    【讨论】:

    • 另一种测试方法是对您的网站运行一个好的网络扫描仪(无论如何您都应该这样做)。如果启用了 OPTIONS,它应该会选择它。
    • 有趣。使用 IIS 7.5,当我添加您提到的行时,我开始收到 500.19 错误。看起来它与我的 applicationHost.config 设置冲突。
    【解决方案2】:

    这对我有用,但只有在强制特定动词由默认处理程序处理之后。

    <system.web>
    ...
      <httpHandlers>
      ... 
        <add path="*" verb="OPTIONS" type="System.Web.DefaultHttpHandler" validate="true"/>
        <add path="*" verb="TRACE" type="System.Web.DefaultHttpHandler" validate="true"/>
        <add path="*" verb="HEAD" type="System.Web.DefaultHttpHandler" validate="true"/>
    

    您仍然使用与上面相同的配置,但还强制使用默认处理程序处理动词并进行验证。来源:http://forums.asp.net/t/1311323.aspx

    一种简单的测试方法就是拒绝 GET 并查看您的网站是否加载。

    【讨论】:

    • 即使在使用了你的代码之后,它对我也不起作用。你能建议我可能会错过什么吗?我的环境是 asp.net 和 IIS
    • @Ram 在没有看到您的配置或对您的环境有任何了解的情况下,我无法提出任何建议。请作为一个关于 SO 的问题,并参考这个问题,详细了解您当前的设置。
    • 我收到 HTTP 错误 500.23 - 内部服务器错误..! @BrutalDev,你对这种情况有什么想法吗..
    • @MahmutEFE 内部错误与此问题无关。 500 错误通常是您的代码或配置有问题,我会首先检查 ASP.NET 运行时错误的事件日志(事件查看器)以确定实际的潜在问题是什么。
    • @brutalDev 感谢您的回复。当我将您的解决方案应用于我的网络配置时,我收到了这个错误。之后我删除了它,错误消失了。但我找到了另一个答案。我的答案在下面并为我工作..再次感谢..
    【解决方案3】:

    这个禁用所有虚假动词,只允许 GET 和 POST

    <system.webServer>
      <security>
        <requestFiltering>
          <verbs allowUnlisted="false">
        <clear/>
        <add verb="GET" allowed="true"/>
        <add verb="POST" allowed="true"/>
          </verbs>
        </requestFiltering>
      </security>
    </system.webServer>
    

    【讨论】:

      【解决方案4】:

      适用于使用 IIS 管理器寻找 UI 选项的任何人。

      1. 在 IIS 管理器中打开网站
      2. 转到请求过滤并打开请求过滤窗口。
      3. 转到 动词 选项卡并将 HTTP 动词添加到“允许动词...”或“拒绝动词...”。 这允许在 “拒绝动词..”集合。

      IIS 管理器中的请求过滤窗口

      添加动词...或拒绝动词...

      【讨论】:

        猜你喜欢
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 2015-10-21
        • 2020-08-08
        • 2014-03-08
        相关资源
        最近更新 更多