Gie*_*ius 8 asp.net asp.net-mvc iis-7 asp.net-mvc-3
我们的网站上线了,当然,我们开始接收大量的探测请求,比如
'/blog/wp-login.php'
'/admin/admin.php'
等等.
所以问题是,你怎么跟他们做什么?
现在在每种情况下都会抛出404错误,elmah会发送有关它的电子邮件,但我认为最好至少忽略所有的php请求.
如何做到这一点,这样的请求将最低限度地加载服务器,可能有可能,asp.net管道将不参与此类请求?
或者重定向或返回空结果更好?
如果需要简单地添加IgnoreRoutes,可能有人有好的路由集,这会忽略大多数探测请求?
Tom*_*mmy 10
我知道你已经声明你不想在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>
Run Code Online (Sandbox Code Playgroud)
使用设置为AbortRequest的操作类型重写完全切断HTTP连接并删除请求,不返回404或403错误.摘自"创建访问块"部分中的" 学习IIS ".
编辑 - 由于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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |