25

出于安全原因,我想通过应用程序级别禁用这些方法,所以我有这个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>

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

4

4 回答 4

41

最后我找到了这个问题的另一个答案。这对我有用。只需将以下数据添加到您的 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/

于 2015-03-27T16:48:25.567 回答
6

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

<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 并查看您的站点是否加载。

于 2013-09-03T06:28:11.230 回答
5

这个禁用所有虚假动词,只允许 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>
于 2019-08-30T14:08:55.173 回答
4

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

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

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

添加动词...或拒绝动词... 在此处输入图像描述

于 2018-01-11T19:54:24.967 回答