asp.net的sql防注入和去除html标记的方法
2014-03-27 21:46
260 查看
一、
二、
// <summary> /// 过滤标记 /// </summary> /// <param name="NoHTML">包括HTML,脚本,数据库关键字,特殊字符的源码 </param> /// <returns>已经去除标记后的文字</returns> public static string NoHTML(string Htmlstring) { if (Htmlstring == null) { return ""; } else { //删除脚本 Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase); //删除HTML Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, @"(\d+);", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase); //删除与数据库相关的词 Htmlstring = Regex.Replace(Htmlstring, "select", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "insert", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "delete from", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "count''", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "drop table", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "truncate", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "asc", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "mid", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "char", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "exec master", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "net localgroup administrators", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "and", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "net user", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "or", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "net", "", RegexOptions.IgnoreCase); //Htmlstring = Regex.Replace(Htmlstring,"*", "", RegexOptions.IgnoreCase); //Htmlstring = Regex.Replace(Htmlstring,"-", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "delete", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "drop", "", RegexOptions.IgnoreCase); Htmlstring = Regex.Replace(Htmlstring, "script", "", RegexOptions.IgnoreCase); //特殊的字符 Htmlstring = Htmlstring.Replace("<", ""); Htmlstring = Htmlstring.Replace(">", ""); Htmlstring = Htmlstring.Replace("*", ""); Htmlstring = Htmlstring.Replace("-", ""); Htmlstring = Htmlstring.Replace("?", ""); Htmlstring = Htmlstring.Replace(",", ""); Htmlstring = Htmlstring.Replace("/", ""); Htmlstring = Htmlstring.Replace(";", ""); Htmlstring = Htmlstring.Replace("*/", ""); Htmlstring = Htmlstring.Replace("\r\n", ""); Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim(); return Htmlstring; } }
二、
private bool ProcessSqlStr(string Str)//判断地址栏特殊字符 { bool ReturnValue = true; try { if (Str.Trim() != "") { //string SqlStr = "and ¦exec ¦insert ¦select ¦delete ¦update ¦count ¦* ¦chr ¦mid ¦master ¦truncate ¦char ¦declare"; string SqlStr = "--¦'¦script¦exec¦iframe¦where¦or¦order¦create¦and¦insert¦select¦delete¦update¦mid¦master¦truncate¦declare"; string[] anySqlStr = SqlStr.Split('¦'); foreach (string ss in anySqlStr) { if (Str.ToLower().IndexOf(ss) >= 0) { ReturnValue = false; break; } } } } catch { ReturnValue = false; } return ReturnValue; }
相关文章推荐
- asp.net的sql防注入 和去除html标记的函数
- asp.net的sql防注入 和去除html标记的函数
- ASP.NET 去除所有HTML标记的方法
- ASP.NET 去除所有HTML标记的方法
- ASP.NET 去除所有HTML标记的方法
- Asp.Net 生成验证码,清空缓存,分页方法,生成图片水印,防注入过滤,页面过滤HTML,文字转图片
- asp.net防SQL/JS注入攻击:过滤标记
- 在ASP.NET中操纵HTML HEAD标记的方法
- ASP.NET去除HTML标记,取出文本中的图片地址,移除HTML标签
- ASP.NET 去除所有HTML标记
- ASP.NET 去除HTML标记 函数
- asp.net防SQL/JS注入攻击:过滤标记
- ASP.Net 去除字符串中的html标记
- ASP.NET 去除所有HTML标记
- 在ASP.NET中操纵HTML HEAD标记的方法
- ASP.NET MVC 扩展HtmlHelper类方法
- asp.net 中如何去除FCK编辑器生成的Html的标签
- Asp.Net MVC 扩展 Html.ImageFor 方法详解
- Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?
- ASP.NET去除HTML标签并截取指定长度字符串