从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可;

http://bbs.webscan.360.cn/forum.php?mod=viewthread&tid=711&page=1&extra=#pid1927

using System.Text.RegularExpressions;
using System.Web; /// <summary>
/// Web请求安全检查:防止跨站点脚本,Sql注入等攻击,来自:http://bbs.webscan.360.cn/forum.php?mod=viewthread&tid=711&page=1&extra=#pid1927
/// 检查数据包括:
/// 1.Cookie
/// 2.当前页面地址
/// 3.ReferrerUrl
/// 4.Post数据
/// 5.Get数据
/// </summary>
public class Safe360
{
#region 执行安全检查 /// <summary>
/// 执行安全检查
/// </summary>
public static void Procress()
{
const string errmsg =
"<div style='position:fixed;top:0px;width:100%;height:100%;background-color:white;color:green;font-weight:bold;border-bottom:5px solid #999;'><br>您的提交带有不合法参数,谢谢合作!<br><br>了解更多请点击:<a href='http://webscan.360.cn'>360网站安全检测</a></div>"; if (RawUrl())
{
HttpContext.Current.Response.Write(errmsg);
HttpContext.Current.Response.End();
} if (CookieData())
{
HttpContext.Current.Response.Write(errmsg);
HttpContext.Current.Response.End();
} if (HttpContext.Current.Request.UrlReferrer != null)
{
if (Referer())
{
HttpContext.Current.Response.Write(errmsg);
HttpContext.Current.Response.End();
}
} if (HttpContext.Current.Request.RequestType.ToUpper() == "POST")
{
if (PostData())
{
HttpContext.Current.Response.Write(errmsg);
HttpContext.Current.Response.End();
}
}
if (HttpContext.Current.Request.RequestType.ToUpper() == "GET")
{
if (GetData())
{
HttpContext.Current.Response.Write(errmsg);
HttpContext.Current.Response.End();
}
}
} #endregion #region 安全检查正则 /// <summary>
/// 安全检查正则
/// </summary>
private const string StrRegex =
@"<[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; #endregion #region 检查Post数据 /// <summary>
/// 检查Post数据
/// </summary>
/// <returns></returns>
private static bool PostData()
{
bool result = false; for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
{
result = CheckData(HttpContext.Current.Request.Form[i]);
if (result)
{
break;
}
}
return result;
} #endregion #region 检查Get数据 /// <summary>
/// 检查Get数据
/// </summary>
/// <returns></returns>
private static bool GetData()
{
bool result = false; for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
{
result = CheckData(HttpContext.Current.Request.QueryString[i]);
if (result)
{
break;
}
}
return result;
} #endregion #region 检查Cookie数据 /// <summary>
/// 检查Cookie数据
/// </summary>
/// <returns></returns>
private static bool CookieData()
{
bool result = false;
for (int i = 0; i < HttpContext.Current.Request.Cookies.Count; i++)
{
result = CheckData(HttpContext.Current.Request.Cookies[i].Value.ToLower());
if (result)
{
break;
}
}
return result;
} #endregion #region 检查Referer /// <summary>
/// 检查Referer
/// </summary>
/// <returns></returns>
private static bool Referer()
{
return CheckData(HttpContext.Current.Request.UrlReferrer.ToString());
} #endregion #region 检查当前请求路径 /// <summary>
/// 检查当前请求路径
/// </summary>
/// <returns></returns>
private static bool RawUrl()
{
return CheckData(HttpContext.Current.Request.RawUrl);
} #endregion #region 正则匹配 /// <summary>
/// 正则匹配
/// </summary>
/// <param name="inputData"></param>
/// <returns></returns>
private static bool CheckData(string inputData)
{
return Regex.IsMatch(inputData, StrRegex);
} #endregion
}

在Global.asax里调用的代码:

private void Application_BeginRequest(object sender, EventArgs e)

    {

        Safe360.Procress();

}

作者:a497785609 发表于2014-4-16 17:14:29 原文链接
阅读:58 评论:0 查看评论

[原]网站跨站点脚本,Sql注入等攻击的处理的更多相关文章

  1. 网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  2. 使用过滤器解决SQL注入和跨站点脚本编制

    1 SQL注入.盲注 1.1 SQL注入.盲注概述 Web 应用程序通常在后端使用数据库,以与企业数据仓库交互.查询数据库事实上的标准语言是 SQL(各大数据库供应商都有自己的不同版本).Web 应用 ...

  3. ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  4. IBM Rational AppScan:跨站点脚本攻击深入解析

    IBM Rational AppScan:跨站点脚本攻击深入解析    了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...

  5. 跨站点脚本编制-XSS 描述及解决方法

    跨站点脚本编制可能是一个危险的安全性问题,在设计安全的基于 Web 的应用程序时应该考虑这一点.本文中,描述了这种问题的本质.它是如何起作用的,并概述了一些推荐的修正策略. 当今的大多数网站都对 We ...

  6. 跨站点脚本攻击XSS

    来源:http://www.freebuf.com/articles/web/15188.html 跨站点脚本攻击是一种Web应用程序的攻击,攻击者尝试注入恶意脚本代码到受信任的网站上执行恶意操作.在 ...

  7. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于mica-xss)

    1. 简介   XSS,即跨站脚本编制,英文为Cross Site Scripting.为了和CSS区分,命名为XSS.   XSS是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码 ...

  8. 跨站点脚本编制实例(AppScan扫描结果)

    最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中有很多是关于跨站点脚本编制问题的.下面就把这块东西分享出来. 原创文章,转载请注明 ------------------ ...

  9. 【漏洞三】跨站点脚本(XSS)攻击

    [漏洞] 跨站点脚本(XSS)攻击 [原因] 跨站点脚本(也称为xss)是一个漏洞,攻击者可以发送恶意代码(通常在(Javascript的形式)给另一个用户.因为浏览器无法知道脚本是否值得信任,所以它 ...

随机推荐

  1. hdu 5747 Aaronson

    T :  1 n m:  10  2 题解:20 * 0  +  21* 1  +  22* 2 = 10 输出:3  <--  0+1+2=3 AC 代码: #include<stdio ...

  2. httpModules与httpHandlers之httpModules(转载)

    WapModule.cs:public class WapModule:IHttpModule{ public void Init(HttpApplication context)        {  ...

  3. C# 类型参数的约束

    在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制.如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误.这些限制称为约束.约束是使用 where 上 ...

  4. JavaScriptSerializer中日期序列化问题解决方案

    JavaScriptSerializer中日期序列化问题解决方案 直接进入主题: class Student { public int age { get; set; } public DateTim ...

  5. curl模拟post请求

    1,curl -d "userType=seller&userId=1034285" "www.baidu.com/getInfo.php"  curl ...

  6. 学习Linux下的IP地址地理位置信息显示工具nali

    首先详细教程已经有前辈做了详细的安装和使用介绍,本人只是参照学习和记录下自己的实际操做. 本文参考档:http://www.cnblogs.com/mchina/archive/2012/12/24/ ...

  7. 用windbg+sos找出程序中谁占用内存过高,谁占用CPU过高(转载)

    原文地址: http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html 很早看到windbg+sos方面的知识,一直没仔细学习,也许因为 ...

  8. vs 2012 InstallShield Limited Edition Project 打包windows服务解析

    最近项目从vs2005 升级到vs2010后,发现新的vs2010 不再带有原来的安装工程项目,导致以前的安装包不可以使用,查找资料后发现微软从vs2010 版本后不再提供自带的安装工程,尝试着利用  ...

  9. HDOJ 2089 不要62

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  10. 添加删除一个controller

    (文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) rails generate controller Users rails destroy cont ...