【发布时间】:2018-07-12 14:36:31
【问题描述】:
我遇到的问题与此处列出的基本相同:Blocking "System.Web.HttpException: Path 'OPTIONS' is forbidden" Errors
但是,我担心使用 StaticFileHandler 仍会返回可能对在我们的应用程序中寻找漏洞的人有用的标头。有没有办法通过忽略请求或只返回 405 错误代码来处理这个问题?
【问题讨论】:
标签: asp.net iis web-config
我遇到的问题与此处列出的基本相同:Blocking "System.Web.HttpException: Path 'OPTIONS' is forbidden" Errors
但是,我担心使用 StaticFileHandler 仍会返回可能对在我们的应用程序中寻找漏洞的人有用的标头。有没有办法通过忽略请求或只返回 405 错误代码来处理这个问题?
【问题讨论】:
标签: asp.net iis web-config
--
如果您只是关心从 OPTIONS 请求中删除日志行,以下应该可以:
<rewrite>
<rules>
<rule name="Ignore OPTIONS requests">
<match url=".*"/>
<conditions>
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="OPTIONS" ignoreCase="true" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
请注意 - 虽然上述内容确实需要您想要,但我认为这不是一个好主意。在我看来,您对管理/使用日志的方式有疑问,而不是记录的内容?
(看看 Microsoft 的 Log Parser 和/或 Log Parser Studio - 它是免费的、可编写脚本的,并为您提供“类似 sql”的语法,因此您可以轻松地通过 VERB 或日志文件中的任何其他数据过滤掉,它会吐出表格/图表:)。
--
看看 iis 中的请求过滤功能。它允许您创建允许动词的白名单,或者明确禁止特定动词。过滤在处理请求的早期执行,将返回 404.6 错误
下面是白名单方式(只允许GET请求,根据需要添加额外动词)
<configuration>
<system.webServer>
<security>
<requestFiltering>
<verbsallowUnlisted="false">
<add verb="GET" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
</configuration>
这是一个更通用的版本,它允许除OPTIONS 之外的所有动词
<configuration>
<system.webServer>
<security>
<requestFiltering>
<verbsallowUnlisted="true">
<add verb="OPTIONS" allowed="false" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
</configuration>
请参阅 Microsoft 文档了解按动词过滤的请求:
【讨论】: