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;
                }
    }
  • 相关阅读:
    MDA模型定义及扩展
    java中 i = i++和 j = i++ 的区别
    nginx+tomcat负载均衡和session复制
    HDU 4010.Query on The Trees 解题报告
    codeforces 165D.Beard Graph 解题报告
    zoj 3209.Treasure Map(DLX精确覆盖)
    hdu 1155 Bungee Jumping
    选择Nginx的理由
    九九乘法表
    K
  • 原文地址:https://www.cnblogs.com/xiangweisareas/p/12334568.html
Copyright © 2011-2022 走看看