Commit 31ac928b16d3e630ccaf9b2f0a64afeb6ce485d2

Authored by 王通
1 parent 196089d7

1.防sql注入漏洞filter

src/main/java/com/bsth/filter/SQLInjectFilter.java 0 → 100644
  1 +package com.bsth.filter;
  2 +
  3 +import org.springframework.stereotype.Component;
  4 +
  5 +import javax.servlet.FilterChain;
  6 +import javax.servlet.ServletException;
  7 +import javax.servlet.http.HttpServletRequest;
  8 +import javax.servlet.http.HttpServletResponse;
  9 +import java.io.IOException;
  10 +import java.util.Enumeration;
  11 +
  12 +@Component
  13 +public class SQLInjectFilter extends BaseFilter{
  14 +
  15 + @Override
  16 + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
  17 + throws IOException, ServletException {
  18 + //获取请求对象中的参数名称
  19 + Enumeration enu = request.getParameterNames();
  20 +
  21 + //遍历枚举
  22 + while (enu.hasMoreElements()) {
  23 + //取参数名
  24 + String paraName = (String)enu.nextElement();
  25 +
  26 + //取参数值并校验
  27 + if (isSqlInject(request.getParameter(paraName))) {
  28 + return;
  29 + }
  30 + }
  31 + //校验完毕,放行
  32 + chain.doFilter(request, response);
  33 + }
  34 +
  35 + private static boolean isSqlInject(String injectStr) {
  36 + String injStr = "'|and|exec|create|insert|select|delete|update|count|*|%|chr|mid|master|truncate|drop|char|declare|;|or|-|+|,";
  37 + String injStrArr[] = injStr.split("\\|");
  38 + injectStr = injectStr.toLowerCase();
  39 + for (int i = 0; i < injStrArr.length; i++) {
  40 + if (injectStr.indexOf(injStrArr[i]) >= 0) {
  41 + return true;
  42 + }
  43 + }
  44 + return false;
  45 + }
  46 +}
... ...