[原]网站跨站点脚本,Sql注入等攻击的处理
2014-04-16 17:14
459 查看
从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可;
http://bbs.webscan.360.cn/forum.php?mod=viewthread&tid=711&page=1&extra=#pid1927
在Global.asax里调用的代码:
private void Application_BeginRequest(object sender, EventArgs e)
{
Safe360.Procress();
}
作者:a497785609 发表于2014-4-16 17:14:29 原文链接
阅读:58 评论:0 查看评论
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注入等攻击的处理
- 网站跨站点脚本,Sql注入等攻击的处理
- 网站跨站点脚本,Sql注入等攻击的处理
- 网站跨站点脚本,Sql注入等攻击的处理
- 网站漏洞处理(SQL注入、XSS脚本攻击、防外站提交)以及扩展思路
- 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置
- 【安全牛学习笔记】手动漏洞挖掘-SQL注入XSS-简介、跨站脚本检测和常见的攻击利用手段
- [原创]支付宝alipay网站安全性测试漏洞之“跨站脚本注入攻击”
- Web漏洞处理--http host头攻击漏洞处理方案/检测到目标URL存在宽字节跨站漏洞/ 检测到目标URL存在SQL注入漏洞
- 防止跨站点脚本攻击和钓鱼注入等
- MVC4.0 sql脚本、跨站脚本(XSS)、跨站伪造请求(CSRF)三种常见安全问题处理
- 跨站点脚本攻击深入解析
- 跨站点脚本攻击简述
- JAVA 安全性转码代码(包括sql注入,跨站脚本)
- SQL注入网站入侵攻击实例
- 跨站点脚本攻击深入解析
- 跨站点脚本攻击XSS
- ASP防范跨站点脚本攻击的方法
- 深入解析跨站点脚本攻击XSS
- 跨站脚本攻击漏洞