中止asp.net请求而不向客户端发送任何响应

her*_*son 5 asp.net asp.net-mvc

我的小ASP.NET MVC应用程序收到了很多关于伪装"setup.php"页面的请求(每周容易200多个).我猜这是一些试图在网络上发现易受攻击的网站的机器人.这不是一个大问题,但它确实倾向于用垃圾填满我的错误日志,并且可能更难找到需要修复的实际问题.

我想要做的是创建一个路径来处理所有.php请求(以及可能的其他明显虚假的扩展)并以某种方式处理它们.什么是太棒了将立即中止请求,以便我的应用程序不会浪费时间/带宽创建和发送响应(即使它只是一个404).此外,假设这些是恶意请求,那么让他们的服务器坐下来等待超时而不是立即响应并快速继续尝试别人的服务器会很棒:)

所以,我想这是一个2部分的问题.

  1. 是否可以在不发送响应的情况下直接停止在ASP.NET/MVC中处理请求

  2. 这个问题有更好的解决方案吗?

Rya*_*son 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>
Run Code Online (Sandbox Code Playgroud)