【问题标题】:Best Practice for denying/killing specific URL requests ASP.Net IIS 7.5拒绝/终止特定 URL 请求的最佳实践 ASP.Net IIS 7.5
【发布时间】:2018-02-08 12:00:32
【问题描述】:

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

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

来自艾尔玛

所以我已经进入并专门过滤了 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,那就太好了,但现在仅过去 3 个月就有 700 个唯一 IP 发出这些请求。主要优先事项是短路我知道是虚假的 URL 字典中的请求,并避免来自我的网络服务器的日志记录和响应。谢谢!

【问题讨论】:

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


    【解决方案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;
        }
    

    【讨论】:

    • 是的,这很有用。谢谢。如果我有一个字典/数组/集合,比如约 400 个“坏”网址,那么就常规“好”请求的响应时间而言,这会占用多少资源?
    • 可能还好,你可以随时测量,也可以单独问一个问题,查字典的性能,这会减慢多少请求
    猜你喜欢
    • 2011-02-28
    • 2017-01-27
    • 2023-03-22
    • 1970-01-01
    • 2018-05-25
    • 2016-04-12
    • 2021-05-07
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多