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;
                }
    }
  • 相关阅读:
    hbase删除标记和注意事项
    马上拥有一台自己的云服务器
    在 Ubuntu 开启 GO 程序编译之旅
    在 Ubuntu 上安装 Protobuf 3
    功能设计中技术人员之惑
    关于数据可视化页面制作
    快速响应请求浅谈
    自定义一个代码耗时计数工具类
    一种极简的异步超时处理机制设计与实现(C#版)
    百度地图API图标、文本、图例与连线
  • 原文地址:https://www.cnblogs.com/xiangweisareas/p/12334568.html
Copyright © 2011-2022 走看看