Utils.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Text.RegularExpressions;
  5. namespace Bowin.Common.Security
  6. {
  7. internal class Utils
  8. {
  9. /// <summary>
  10. /// 该方法用来检测用户输入是否带有恶意
  11. /// </summary>
  12. /// <param name="text">用户输入的文字</param>
  13. /// <param name="maxlength">最大的长度</param>
  14. /// <returns>返回验证后的文字</returns>
  15. public static string InputText(string text, int maxlength)
  16. {
  17. text = text.ToLower().Trim();
  18. if (text == null || text.Length == 0)
  19. return string.Empty;
  20. if (text.Length > maxlength)
  21. text = text.Substring(0, maxlength);
  22. text = Regex.Replace(text, "[\\s]{2,{", " ");
  23. text = Regex.Replace(text, "(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)", "\n"); //<br>
  24. text = Regex.Replace(text, "(\\s*&[n|N][b|B][s|S][p|P];\\s*)+", " "); //&nbsp;
  25. text = Regex.Replace(text, "<(.|\\n)*?>", string.Empty); //any other tags
  26. text = Regex.Replace(text, "=", "");
  27. text = Regex.Replace(text, "%", "");
  28. text = Regex.Replace(text, "'", "");
  29. text = Regex.Replace(text, "select ", "");
  30. text = Regex.Replace(text, "insert ", "");
  31. text = Regex.Replace(text, "delete ", "");
  32. text = Regex.Replace(text, "or ", "");
  33. text = Regex.Replace(text, "-- ", "");
  34. text = Regex.Replace(text, "and ", "");
  35. text = Regex.Replace(text, "where ", "");
  36. text = Regex.Replace(text, "update ", "");
  37. text = Regex.Replace(text, "script ", "");
  38. text = Regex.Replace(text, "iframe ", "");
  39. text = Regex.Replace(text, "master ", "");
  40. text = Regex.Replace(text, "exec ", "");
  41. text = Regex.Replace(text, "<", "");
  42. text = Regex.Replace(text, ">", "");
  43. text = Regex.Replace(text, "\r\n", "");
  44. return text;
  45. }
  46. public static List<string> scriptwords()
  47. {
  48. List<string> lw = new List<string>();
  49. lw.Add("|");
  50. lw.Add("&");
  51. lw.Add(";");
  52. lw.Add("$");
  53. lw.Add("%");
  54. lw.Add("@");
  55. lw.Add(Chr(34));
  56. lw.Add("\'");
  57. lw.Add("\\" + Chr(34));
  58. lw.Add("<");
  59. lw.Add(">");
  60. lw.Add("(");
  61. lw.Add(")");
  62. lw.Add("+");
  63. lw.Add(Chr(13));
  64. lw.Add(Chr(10));
  65. lw.Add(",");
  66. lw.Add("\\");
  67. return lw;
  68. }
  69. public static string Chr(int asciiCode)
  70. {
  71. if (asciiCode >= 0 && asciiCode <= 255)
  72. {
  73. System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
  74. byte[] byteArray = new byte[] { (byte)asciiCode };
  75. string strCharacter = asciiEncoding.GetString(byteArray);
  76. return (strCharacter);
  77. }
  78. else
  79. {
  80. return "";
  81. }
  82. }
  83. public static List<string> sqlwords()
  84. {
  85. List<string> lw = new List<string>();
  86. lw.Add("select ");
  87. lw.Add("insert ");
  88. lw.Add("delete ");
  89. lw.Add("or ");
  90. lw.Add("exec ");
  91. lw.Add("-- ");
  92. lw.Add("and ");
  93. lw.Add("where ");
  94. lw.Add("update ");
  95. lw.Add("master ");
  96. lw.Add("script ");
  97. lw.Add("iframe ");
  98. lw.Add("declare ");
  99. lw.Add("char(");
  100. lw.Add("javascript:");
  101. lw.Add("truncate ");
  102. lw.Add("script>");
  103. lw.Add("/**/");
  104. return lw;
  105. }
  106. /// <summary>
  107. /// 判断是否包含sql注入关键字
  108. /// </summary>
  109. /// <param name="text"></param>
  110. /// <returns></returns>
  111. public static bool isSqlWord(string text)
  112. {
  113. bool result = false;
  114. foreach (string w in sqlwords())
  115. {
  116. if (text.ToLower().Contains(w))
  117. {
  118. result = true;
  119. break;
  120. }
  121. }
  122. return result;
  123. }
  124. /// <summary>
  125. /// 判断是否包含script危险字符
  126. /// </summary>
  127. /// <param name="text"></param>
  128. /// <returns></returns>
  129. public static bool isscriptword(string text)
  130. {
  131. bool result = false;
  132. foreach (string w in scriptwords())
  133. {
  134. if (text.Contains(w))
  135. {
  136. result = true;
  137. break;
  138. }
  139. }
  140. return result;
  141. }
  142. }
  143. }