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

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

前面这篇文章介绍了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调用,基本很少用了。所以就不实验了。

 

你可能感兴趣的文章
基于DDD的.NET开发框架 - ABP初探
查看>>
Redis持久化机制
查看>>
dede的使用-2
查看>>
C++银行储蓄程序代码
查看>>
Java 线程池框架核心代码分析
查看>>
第六次作业:素数判断及求和
查看>>
「学习笔记——Linux」Linux软件管理(RPM,Dpkg,APT)
查看>>
Soft NMS
查看>>
Linux命令的那些事(二)
查看>>
强制转https
查看>>
Ubuntu下GTK的安装、编译和测试
查看>>
javascript中window.open()与window.location.href的区别
查看>>
Respond.js的作用
查看>>
FCN笔记(Fully Convolutional Networks for Semantic Segmentation)
查看>>
外部线程停止Java子线程的方法
查看>>
java对象内存占用
查看>>
matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
查看>>
Java基础-封装(09)
查看>>
一个人开始废掉的3种迹象
查看>>
iOS-UIView常见方法、xib的基本使用
查看>>