首页 > 编程 > C# > 正文

C#实现过滤sql特殊字符的方法集合

2019-10-29 21:36:43
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#实现过滤sql特殊字符的方法,以实例形式分析总结了C#针对SQL危险字符的几种常用的过滤技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了C#实现过滤sql特殊字符的方法集合。分享给大家供大家参考,具体如下:

1.

 

 
  1. /// <summary> 
  2. /// 过滤不安全的字符串 
  3. /// </summary> 
  4. /// <param name="Str"></param> 
  5. /// <returns></returns> 
  6. public static string FilteSQLStr(string Str) 
  7. Str = Str.Replace("'"""); 
  8. Str = Str.Replace("/""""); 
  9. Str = Str.Replace("&""&"); 
  10. Str = Str.Replace("<""<"); 
  11. Str = Str.Replace(">"">"); 
  12. Str = Str.Replace("delete"""); 
  13. Str = Str.Replace("update"""); 
  14. Str = Str.Replace("insert"""); 
  15. return Str;  

2.

 

 
  1. #region 过滤 Sql 语句字符串中的注入脚本 
  2. /// <summary> 
  3. /// 过滤 Sql 语句字符串中的注入脚本 
  4. /// </summary> 
  5. /// <param name="source">传入的字符串</param> 
  6. /// <returns>过滤后的字符串</returns> 
  7. public static string SqlFilter(string source) 
  8. //单引号替换成两个单引号 
  9. source = source.Replace("'""''"); 
  10. //半角封号替换为全角封号,防止多语句执行 
  11. source = source.Replace(";"";"); 
  12. //半角括号替换为全角括号 
  13. source = source.Replace("(""("); 
  14. source = source.Replace(")"")"); 
  15. ///////////////要用正则表达式替换,防止字母大小写得情况//////////////////// 
  16. //去除执行存储过程的命令关键字 
  17. source = source.Replace("Exec"""); 
  18. source = source.Replace("Execute"""); 
  19. //去除系统存储过程或扩展存储过程关键字 
  20. source = source.Replace("xp_""x p_"); 
  21. source = source.Replace("sp_""s p_"); 
  22. //防止16进制注入 
  23. source = source.Replace("0x""0 x"); 
  24. return source; 
  25. #endregion 

3.

 

 
  1. /// 过滤SQL字符。 
  2. /// </summary> 
  3. /// <param name="str">要过滤SQL字符的字符串。</param> 
  4. /// <returns>已过滤掉SQL字符的字符串。</returns> 
  5. public static string ReplaceSQLChar(string str) 
  6. if (str == String.Empty) 
  7. return String.Empty; str = str.Replace("'""‘"); 
  8. str = str.Replace(";"";"); 
  9. str = str.Replace(","","); 
  10. str = str.Replace("?""?"); 
  11. str = str.Replace("<""<"); 
  12. str = str.Replace(">"">"); 
  13. str = str.Replace("(""("); 
  14. str = str.Replace(")"")"); 
  15. str = str.Replace("@""@"); 
  16. str = str.Replace("=""="); 
  17. str = str.Replace("+""+"); 
  18. str = str.Replace("*""*"); 
  19. str = str.Replace("&""&"); 
  20. str = str.Replace("#""#"); 
  21. str = str.Replace("%""%"); 
  22. str = str.Replace("$""¥"); 
  23. return str; 

4.

 

 
  1. /// <summary> 
  2. /// 过滤标记 
  3. /// </summary> 
  4. /// <param name="NoHTML">包括HTML,脚本,数据库关键字,特殊字符的源码 </param> 
  5. /// <returns>已经去除标记后的文字</returns> 
  6. public string NoHtml(string Htmlstring) 
  7. if (Htmlstring == null
  8. return ""
  9. else 
  10. //删除脚本 
  11. Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>""", RegexOptions.IgnoreCase); 
  12. //删除HTML 
  13. Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>""", RegexOptions.IgnoreCase); 
  14. Htmlstring = Regex.Replace(Htmlstring, @"([/r/n])[/s]+""", RegexOptions.IgnoreCase); 
  15. Htmlstring = Regex.Replace(Htmlstring, @"-->""", RegexOptions.IgnoreCase); 
  16. Htmlstring = Regex.Replace(Htmlstring, @"<!--.*""", RegexOptions.IgnoreCase); 
  17. Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);""/"", RegexOptions.IgnoreCase); 
  18. Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);""&", RegexOptions.IgnoreCase); 
  19. Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);""<", RegexOptions.IgnoreCase); 
  20. Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);"">", RegexOptions.IgnoreCase); 
  21. Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);"" ", RegexOptions.IgnoreCase); 
  22. Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);""/xa1", RegexOptions.IgnoreCase); 
  23. Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);""/xa2", RegexOptions.IgnoreCase); 
  24. Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);""/xa3", RegexOptions.IgnoreCase); 
  25. Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);""/xa9", RegexOptions.IgnoreCase); 
  26. Htmlstring = Regex.Replace(Htmlstring, @"&#(/d+);""", RegexOptions.IgnoreCase); 
  27. Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell""", RegexOptions.IgnoreCase); 
  28. //删除与数据库相关的词 
  29. Htmlstring = Regex.Replace(Htmlstring, "select""", RegexOptions.IgnoreCase); 
  30. Htmlstring = Regex.Replace(Htmlstring, "insert""", RegexOptions.IgnoreCase); 
  31. Htmlstring = Regex.Replace(Htmlstring, "delete from""", RegexOptions.IgnoreCase); 
  32. Htmlstring = Regex.Replace(Htmlstring, "count''""", RegexOptions.IgnoreCase); 
  33. Htmlstring = Regex.Replace(Htmlstring, "drop table""", RegexOptions.IgnoreCase); 
  34. Htmlstring = Regex.Replace(Htmlstring, "truncate""", RegexOptions.IgnoreCase); 
  35. Htmlstring = Regex.Replace(Htmlstring, "asc""", RegexOptions.IgnoreCase); 
  36. Htmlstring = Regex.Replace(Htmlstring, "mid""", RegexOptions.IgnoreCase); 
  37. Htmlstring = Regex.Replace(Htmlstring, "char""", RegexOptions.IgnoreCase); 
  38. Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell""", RegexOptions.IgnoreCase); 
  39. Htmlstring = Regex.Replace(Htmlstring, "exec master""", RegexOptions.IgnoreCase); 
  40. Htmlstring = Regex.Replace(Htmlstring, "net localgroup administrators""", RegexOptions.IgnoreCase); 
  41. Htmlstring = Regex.Replace(Htmlstring, "and""", RegexOptions.IgnoreCase); 
  42. Htmlstring = Regex.Replace(Htmlstring, "net user""", RegexOptions.IgnoreCase); 
  43. Htmlstring = Regex.Replace(Htmlstring, "or""", RegexOptions.IgnoreCase); 
  44. Htmlstring = Regex.Replace(Htmlstring, "net""", RegexOptions.IgnoreCase); 
  45. //Htmlstring = Regex.Replace(Htmlstring, "*", "", RegexOptions.IgnoreCase); 
  46. Htmlstring = Regex.Replace(Htmlstring, "-""", RegexOptions.IgnoreCase); 
  47. Htmlstring = Regex.Replace(Htmlstring, "delete""", RegexOptions.IgnoreCase); 
  48. Htmlstring = Regex.Replace(Htmlstring, "drop""", RegexOptions.IgnoreCase); 
  49. Htmlstring = Regex.Replace(Htmlstring, "script""", RegexOptions.IgnoreCase); 
  50. //特殊的字符 
  51. Htmlstring = Htmlstring.Replace("<"""); 
  52. Htmlstring = Htmlstring.Replace(">"""); 
  53. Htmlstring = Htmlstring.Replace("*"""); 
  54. Htmlstring = Htmlstring.Replace("-"""); 
  55. Htmlstring = Htmlstring.Replace("?"""); 
  56. Htmlstring = Htmlstring.Replace("'""''"); 
  57. Htmlstring = Htmlstring.Replace(","""); 
  58. Htmlstring = Htmlstring.Replace("/"""); 
  59. Htmlstring = Htmlstring.Replace(";"""); 
  60. Htmlstring = Htmlstring.Replace("*/"""); 
  61. Htmlstring = Htmlstring.Replace("/r/n"""); 
  62. Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim(); 
  63. return Htmlstring; 

5.

 

 
  1. public static bool CheckBadWord(string str) 
  2. string pattern = @"select|insert|delete|from|count/(|drop table|update|truncate|asc/(|mid/(|char/(|xp_cmdshell|exec master|netlocalgroup administrators|net user|or|and"
  3. if (Regex.IsMatch(str, pattern, RegexOptions.IgnoreCase)) 
  4. return true
  5. return false
  6. public static string Filter(string str) 
  7. string[] pattern ={ "select""insert""delete""from""count//(""drop table""update""truncate""asc//(""mid//(""char//(""xp_cmdshell""exec master""netlocalgroup administrators""net user""or""and" }; 
  8. for (int i = 0; i < pattern.Length; i++) 
  9. str = str.Replace(pattern[i].ToString(), ""); 
  10. return str; 

希望本文所述对大家C#程序设计有所帮助。


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表