SQL注入与Java

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

 

posted @   blcblc  阅读(655)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示