码迷,mamicode.com
首页 > 数据库 > 详细

SQL注入与Java

时间:2016-10-23 15:06:41      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:过程   charles   允许   state   jdbc   编译   处理   转义   stat   

前面这篇文章介绍了SQL注入,并且主要就PHP的内容做了实验:

http://www.cnblogs.com/charlesblc/p/5987951.html

还有这篇文章对处理方案做了介绍(PreparedStatement in PDO or mysqli)

http://www.cnblogs.com/charlesblc/p/5988919.html

 

那么对于Java是怎样的情况呢?

首先,尽量避免sql拼接,并且参数加引号。使用正则过滤,前端过滤。使用字符串转换,转义处理。

最终,尽量采用预编译语句集 PreparedStatement。

 

分析得出,PreparedStatement相比Statement基本解决了SQL注入问题,而且效率也有一定提升。

PreparedStatement对参数都做了转义,不允许引号的直接传递;

不允许传参过程中改变sql的逻辑结构,不允许在不同的插入时间改变查询的逻辑结构;

使用PreparedStatement提供的传参接口setXXX,在类型有误时会直接报错。

 

基本SQL注入就被过滤了(用基本,是因为现在也预测不到后面攻击技术是否有突破或者新的漏洞发现)。

另外,WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数。

 

Java连接数据库基本使用Mybatis(之前也用Hibernate)。裸JDBC调用,基本很少用了。所以就不实验了。

 

SQL注入与Java

标签:过程   charles   允许   state   jdbc   编译   处理   转义   stat   

原文地址:http://www.cnblogs.com/charlesblc/p/5989864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!