出于安全考虑,我想通过应用程序级别禁用这些方法 所以我有这个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>
但这不起作用 任何想法?
答案 0 :(得分:32)
最后,我找到了另一个解决这个问题的方法。这对我有用。只需将以下数据添加到您的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
如果你想测试你的网站,它是否有效......你可以使用&#34; HttpRequester &#34; mozilla firefox插件。对于此插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/
答案 1 :(得分: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并查看您的网站是否加载。
答案 2 :(得分:3)
对于使用IIS管理器寻找UI选项的任何人。
答案 3 :(得分:2)
这个禁用所有假动词,只允许GET和POST
show