zoukankan      html  css  js  c++  java
  • ASP .NET如何拦截某些非法的请求地址

    问题:客户需要拦截掉某些非法请求地址(例如:Http://www.xiangwei.com/scripts/.../.../b247.php),因为很大一部分是安全漏洞测试软件请求的,导致用户收到了大量无意义的报错邮件。

    解决思路:

      1.我们没办法彻底分清楚哪些是测试软件请求,哪些是用户请求的。所以只能根据测试软件常用的字符来使用正则判断(我这里收到了大量Http://www.xiangwei.com/scripts/和Http://www.xiangwei.com/content/等开头的请求)。

      2.如果根据scripts和content来拦截,要注意对页面资源文件的区分。

    解决办法:

      在global.cs的Application_BeginRequest中添加以下判断 

    if (Request.RequestType.ToUpper() == "GET")
    {
                    if (XSSFilter.IsInvalidIllegalUrl())
                    {
                        Response.Write("The get data you submitted has malicious characters!");
                        Response.End();
                    }
    }

      XSSFilter部分代码如下(这里有部分代码是参考他人成果,抱歉忘记该作者的博客地址,惭愧)。

      代码解释:因为访问的非法地址,我们页面上是不会有的,所以它的来源页域名不与我们的项目页域名一致,所以我们只在来源Url与当前Url不一致的情况下去拦截,这样就避免将资源文件给KO了!

    private const string StrRegex = @"<[^>]+?style=[w]+?:expression(|((?i)alert|(?i)confirm|(?i)prompt|(?i)onEvent)|(?i)/Content|(?i)/Scripts|^+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|(and|or).{1,6}?(=|>|<|in|like)|/*.+?*/|<s*script|<s*img|EXEC|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";
    public
    static bool IsInvalidIllegalUrl() { bool result = false; var urlReferrer = HttpContext.Current.Request.UrlReferrer;//获取来源页URL var url = HttpContext.Current.Request.Url; if (urlReferrer == null) { result = CheckData(url.ToString()); } else if (urlReferrer.Host != url.Host) { result = CheckData(url.ToString()); } return result; }
    public static bool CheckData(string inputData)
    {
                if (Regex.IsMatch(inputData, StrRegex))
                {
                    return true;
                }
                else
                {
                    return false;
                }
    }
  • 相关阅读:
    Testdisk 操作指南(硬盘分区表恢复)
    ThinkPHP下使用Uploadify插件提示HTTP Error (302)错误的解决办法
    C#获取计算机CPU的温度
    C# 获取显示器的物理尺寸或分辨率
    获取windows 操作系统下的硬件或操作系统信息等
    AD CS relay attack
    内网密码收集[Foxmail]解密
    如果你是业务线的程序员
    浅析php curl_multi_*系列函数进行批量http请求
    memcached讲解
  • 原文地址:https://www.cnblogs.com/xiangweisareas/p/12334568.html
Copyright © 2011-2022 走看看