我们的网站上线了,当然,我们开始收到大量的探测请求,
喜欢
'/blog/wp-login.php'
'/admin/admin.php'
etc.
所以问题是,你用它们做什么?
现在,在每种情况下都会抛出 404 错误,并且 elmah 会发送有关该错误的电子邮件,但我认为最好忽略至少所有 php 请求。
如何做到这一点,这样的请求将最小化服务器的负载,也许可以做到,asp.net 管道不会参与这样的请求?
或者重定向或返回空结果更好?
如果这需要简单地添加 IgnoreRoutes,可能有人拥有一组好的路由,这会忽略大多数探测请求?
我知道您已经说过您不想在 IIS 中使用重写模块,因为它“增加了 IIS 的额外负载”,但事实上,使用 IIS 处理这些问题比传递到应用程序中执行以下操作要简单。同样的事情(尽管两者在资源方面都非常小)。如果你想在 IIS 和你的带宽上以最小的负载忽略该请求,我建议如下
<rewrite>
<rules>
<rule name="Fail PHP requests">
<match url=".*"/>
<conditions>
<add input="{URL}" pattern="*.php*" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
将操作类型设置为 AbortRequest 的此重写会完全切断 HTTP 连接并丢弃请求,不会返回 404 或 403 错误。取自学习IIS http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/在“创建访问块”部分。
EDIT- 由于OP对使用重写模块和性能存在担忧,我将提交第二个选项,该选项仍然可以在不使用重写模块的情况下捕获.php请求。 IIS7及以上版本也支持请求过滤,根据Learn IIS,请求过滤是...
请求过滤模块在请求开始时运行
通过处理 BeginRequest 事件来处理管道。该模块
评估请求元数据,例如标头、查询字符串,
内容长度等,以确定是否请求
元数据与任何现有过滤器匹配。如果存在匹配,则模块
生成 404(文件未找到)响应,然后快捷方式
IIS 管道的其余部分
要实施,请将以下部分添加到您的 web.config 中:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<fileExtensions allowUnlisted="true" >
<add fileExtension=".php" allowed="false"/>
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>
信息来自URL 重写与请求过滤 http://learn.iis.net/page.aspx/501/iis-request-filtering-and-url-rewriting/ and 使用请求过滤 http://learn.iis.net/page.aspx/143/use-request-filtering/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)