博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
防止SQL注入
阅读量:6379 次
发布时间:2019-06-23

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

参考:http://hi.baidu.com/wangyue06/item/c00c824b35cf740ae835049c

1.传统JDBC,采用PreparedStatement 。预编译语句集,内置了处理SQL注入的能力

String sql= "select * from users where username=? and password=?";    //如果把?改为:username1,按参数名绑定        PreparedStatement preState = conn.prepareStatement(sql);        preState.setString(1, userName);                         //则此处变为.setString("username1",username)        preState.setString(2, password);        ResultSet rs = preState.executeQuery();

2. 采用正则表达式,将输入的所有特殊符号转换为空格或其他字符

public static String TransactSQLInjection(String str)        {              return str.replaceAll(".*([';]+|(--)+).*", " ");           // 我认为 应该是return str.replaceAll("([';])+|(--)+","");-->这是原作者的注释,个人不是很赞同。        }        userName=TransactSQLInjection(userName);        password=TransactSQLInjection(password);        String sql="select * from users where username='"+userName+"' and password='"+password+"' ";        Statement sta = conn.createStatement();        ResultSet rs = sta.executeQuery(sql);

 

参考:http://blog.csdn.net/fufengrui/article/details/7740288

3. JAVA Web中,编写Fileter,实现对renquest请求中参数的不合法字符替换

for(String word : invalidsql){                  if(word.equalsIgnoreCase(value) || value.contains(word)){                      if(value.contains("<")){                          value = value.replace("<", "<");     //这个个人认为括号中第二个
<应该替换成其他符号 } if(value.contains(">
")){ value = value.replace(">", ">"); } request.getSession().setAttribute("sqlInjectError", "the request parameter \""+value+"\" contains keyword: \""+word+"\""); response.sendRedirect(request.getContextPath()+error); return; } }

 

4.hibernate 参考:http://www.cnblogs.com/yhason/archive/2012/06/07/2540840.html

转载于:https://www.cnblogs.com/nkxyf/archive/2013/03/28/2987031.html

你可能感兴趣的文章
oracle的sqlplus和dos的中文乱码问题
查看>>
LVS+keepalived高可用负载均衡集群部署(二)---LAMP网站服务器与LVS服务器
查看>>
Struts2之简单数据类型转换
查看>>
python 打印数字
查看>>
iptables规则的查看、添加、删除和修改
查看>>
打开网站显示输入用户名和密码
查看>>
size_t的32位和64位兼容
查看>>
HBase全分布式模式的安装和配置
查看>>
Spring 框架的设计理念与设计模式分析
查看>>
十年web老兵整理的前端视频资料
查看>>
CentOS 6.3 上安装 Oracle 11g R2(转)
查看>>
高可用haproxy调度后端服务器实现动静分离集群架构
查看>>
Java 进行 RSA 加解密
查看>>
Hbase原理、基本概念、基本架构
查看>>
MQ 对比
查看>>
实战:RHEL6配置dhcp服务器并绑定主机IP
查看>>
百度不收录原因分析——Spider抓取篇
查看>>
Ubuntu Server 上安装 Jexus
查看>>
浏览器渲染原理及解剖浏览器内部工作原理
查看>>
dubbo连接zookeeper注册中心因为断网导致线程无限等待问题【转】
查看>>