SqlInjectionUtil.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package org.jeecg.common.util;
  2. import lombok.extern.slf4j.Slf4j;
  3. /**
  4. * sql注入处理工具类
  5. *
  6. * @author zhoujf
  7. */
  8. @Slf4j
  9. public class SqlInjectionUtil {
  10. final static String XSS_STR = "'|and |exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|,";
  11. /**
  12. * sql注入过滤处理,遇到注入关键字抛异常
  13. *
  14. * @param value
  15. * @return
  16. */
  17. public static void filterContent(String value) {
  18. if (value == null || "".equals(value)) {
  19. return;
  20. }
  21. // 统一转为小写
  22. value = value.toLowerCase();
  23. String[] xssArr = XSS_STR.split("\\|");
  24. for (int i = 0; i < xssArr.length; i++) {
  25. if (value.indexOf(xssArr[i]) > -1) {
  26. log.error("请注意,值可能存在SQL注入风险!---> {}", value);
  27. throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
  28. }
  29. }
  30. return;
  31. }
  32. /**
  33. * sql注入过滤处理,遇到注入关键字抛异常
  34. *
  35. * @param values
  36. * @return
  37. */
  38. public static void filterContent(String[] values) {
  39. String[] xssArr = XSS_STR.split("\\|");
  40. for (String value : values) {
  41. if (value == null || "".equals(value)) {
  42. return;
  43. }
  44. // 统一转为小写
  45. value = value.toLowerCase();
  46. for (int i = 0; i < xssArr.length; i++) {
  47. if (value.indexOf(xssArr[i]) > -1) {
  48. log.error("请注意,值可能存在SQL注入风险!---> {}", value);
  49. throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
  50. }
  51. }
  52. }
  53. return;
  54. }
  55. /**
  56. * @特殊方法(不通用) 仅用于字典条件SQL参数,注入过滤
  57. * @param value
  58. * @return
  59. */
  60. @Deprecated
  61. public static void specialFilterContent(String value) {
  62. String specialXssStr = "exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|+|,";
  63. String[] xssArr = specialXssStr.split("\\|");
  64. if (value == null || "".equals(value)) {
  65. return;
  66. }
  67. // 统一转为小写
  68. value = value.toLowerCase();
  69. for (int i = 0; i < xssArr.length; i++) {
  70. if (value.indexOf(xssArr[i]) > -1) {
  71. log.error("请注意,值可能存在SQL注入风险!---> {}", value);
  72. throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
  73. }
  74. }
  75. return;
  76. }
  77. }