博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java类过滤器,防止页面SQL注入
阅读量:7022 次
发布时间:2019-06-28

本文共 2865 字,大约阅读时间需要 9 分钟。

package com.tarena.dingdang.filter;    import java.io.IOException;  import java.util.Enumeration;    import javax.servlet.Filter;  import javax.servlet.FilterChain;  import javax.servlet.FilterConfig;  import javax.servlet.ServletException;  import javax.servlet.ServletRequest;  import javax.servlet.ServletResponse;  import javax.servlet.http.HttpServletRequest;    public class AntiSqlInjectionfilter implements Filter {        public void destroy() {          // TODO Auto-generated method stub      }            public void init(FilterConfig arg0) throws ServletException {          // TODO Auto-generated method stub      }            public void doFilter(ServletRequest args0, ServletResponse args1,              FilterChain chain) throws IOException, ServletException {          HttpServletRequest req=(HttpServletRequest)args0;          HttpServletRequest res=(HttpServletRequest)args1;           //获得所有请求参数名          Enumeration params = req.getParameterNames();          String sql = "";          while (params.hasMoreElements()) {              //得到参数名              String name = params.nextElement().toString();              //System.out.println("name===========================" + name + "--");              //得到参数对应值              String[] value = req.getParameterValues(name);              for (int i = 0; i < value.length; i++) {                  sql = sql + value[i];              }          }          //System.out.println("============================SQL"+sql);          //有sql关键字,跳转到error.html          if (sqlValidate(sql)) {              throw new IOException("您发送请求中的参数中含有非法字符");              //String ip = req.getRemoteAddr();          } else {              chain.doFilter(args0,args1);          }      }            //效验      protected static boolean sqlValidate(String str) {          str = str.toLowerCase();//统一转为小写          String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" +                  "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +                  "table|from|grant|use|group_concat|column_name|" +                  "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" +                  "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";//过滤掉的sql关键字,可以手动添加          String[] badStrs = badStr.split("\\|");          for (int i = 0; i < badStrs.length; i++) {              if (str.indexOf(badStrs[i]) >= 0) {                  return true;              }          }          return false;      }  }      
antiSqlInjection
com.tarena.dingdang.filter.AntiSqlInjectionfilter
antiSqlInjection
/*

  

转载地址:http://iycxl.baihongyu.com/

你可能感兴趣的文章
新机开源经历
查看>>
JavaScript 在对象中声明的函数的递归调用
查看>>
第十三天内容《基础交换十三》小牛配置思路
查看>>
[解决后端使用ceph qem性能问题](升级kvm后使用virt-type=kvm(qemu-system-x86_64、qemu-kvm、qemu-img)...
查看>>
DevOps在完成大量资料学习后我总结了一下
查看>>
(Mac)VMware Fusion 安装centos ,mac访问不了centos里的web服务器解决方案
查看>>
android 实现保存图片到相册
查看>>
centos 最小化安装后安装vmtools故障后解决方法
查看>>
jquery $(document).ready() 与window.onload的区别
查看>>
Spring-rabbit 消息的接收与发送 配置及实例
查看>>
Response.setContentType()常用参数对应说明
查看>>
kubernetes 中的 Service
查看>>
Windroy—在Windows上运行Android系统
查看>>
读书计划
查看>>
想了解迅雷亲历面试的经历吗:笔试+上机+面试
查看>>
媒体查询
查看>>
手机分辨率有哪些
查看>>
MongoDB的分片集群的安装
查看>>
GuozhongCrawler系列教程 (4) StartContext详解
查看>>
MongoDB java操作的一些记录
查看>>