我的小型ASP.NET MVC应用程序收到了一些虚假“setup.php”页面的请求(每周容易200多个)。我猜这是一些试图在网络上发现易受攻击的网站的机器人。这不是一个大问题,但它确实倾向于用垃圾填满我的错误日志,并且可能更难找到需要修复的实际问题。
我想要做的是创建一个路径来处理所有.php请求(以及可能的其他明显的虚假扩展)并以某种方式处理它们。什么是太棒了将立即中止请求,以便我的应用程序不会浪费时间/带宽创建和发送响应(即使它只是一个404)。此外,假设这些是恶意请求,那么让他们的服务器坐下来等待超时而不是立即响应并快速继续尝试其他人的服务器将会很棒:)
所以,我想这是一个2部分的问题。
是否可以在不发送响应的情况下直接停止处理ASP.NET / MVC中的请求
这个问题有更好的解决方案吗?
答案 0 :(得分:3)
如果您使用的是IIS7结帐http://learn.iis.net/page.aspx/499/request-blocking---rule-template/
这可以在你的web.config中指定
<system.webServer>
<rewrite>
<rules>
<rule name="RequestBlockingRule1" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{URL}" pattern="*.php*" />
</conditions>
<action type="CustomResponse" statusCode="403" />
</rule>
</rules>
</rewrite>
</system.webServer>
答案 1 :(得分:0)
您可以尝试返回EmptyResult 。我从来没有尝试过,但文档说“代表一个什么都不做的结果,比如一个什么都不返回的控制器动作方法。”
答案 2 :(得分:0)