拒绝/查杀特定URL请求的最佳实践ASP.Net IIS 7.5

时间:2017-08-30 17:02:37

标签: asp.net-mvc azure iis-7.5 requestfiltering

我在Azure上的Windows 2008 r2实例上托管了一个mvc / forms混合Web应用程序。 IIS服务器是IIS 7.5。在过去的4-5个月里,我的服务器受到漏洞扫描程序检查与php相关的漏洞的严重打击。例如:

The controller for path '/wp-login.php' was not found or does not implement IController.
来自Elmah的

所以我已经进入并专门过滤了IIS 7.5中的.php和.cgi文件扩展名请求,效果很好。但是,我仍然因为以下请求而受到重创:

The controller for path '/admin/Cms_Wysiwyg/directive/' was not found or does not implement IController. 

The controller for path '/phpmyadmin2018/' was not found or does not implement IController.

等。这更令人烦恼,因为一切都被记录下来,404被归还,这一切都是无用的资源。

通过Elmah,我查询了与所有这些请求相关的不同URL列表。什么是短路这些请求的最佳方法?如果我可以选择禁止IP,那将是一件好事,但现在有700个独特的IP在过去3个月内提出这些请求。主要优先事项是将来自URL的字典中的请求短路,我知道这些请求是假的,并避免来自我的网络服务器的记录和响应。谢谢!

1 个答案:

答案 0 :(得分:1)

半伪代码,但我认为它会有所帮助;

Global.asax.cs中的

public class MvcApplication : HttpApplication
{
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        var url = HttpContext.Current.Request.Url.AbsoluteUri;
        if(checkUrl(url)){
           // your code here
        }

        if (UserIsBanned(GetUserIp()))
        {
            Response.Write("ban");
            Response.End();
        }
    }

    private string GetUserIp()
    {
        return HttpContext.Current.Request.UserHostAddress;
    }