SQL注入攻击防御

1. 使用预编译语句

预编译语句PreparedStatement是java.sql中的一个接口,继承自Statement接口。通过Statement对象执行SQL语句时,需要将SQL语句发送给DBMS,由DBMS先进行编译后再执行。而预

编译语句和Statement不同,在创建PreparedStatement对象时就指定了SQL语句,该语句立即发

送给DBMS进行编译,当该编译语句需要被执行时,DBMS直接运行编译后的SQL语句,而不需要像

其他SQL语句那样首先将其编译。

PreparedStatement的好处:

① 将参数与SQL语句分离出来,这样就可以方便对程序的更改和延续,同样,也可以减少不必要的错误。(用参数占位符)

② 效率高,大大提高了代码的可读性和可维护性

 

2.使用ORM框架

防止SQL注入的关键_在于对一些关键字符进行转义,而常见的一些ORM框架,如ibatis、hibernate等,都支持对相应的关键字或者特殊符号进行转义,可以通过简单的配置,很好的预防SQL注入漏洞,降低了普通的开发人员进行安全编程的门槛。

如:通过#符号配置的变量,ibatis能够对输入变量的一些关键字进行转义,防止SQL攻击。

JDBC底层使用PreparedStatement对一些关键字进行了过滤。

 

3.避免密码明文存放

使用MD5,SHA,SHA1单向加密等功能,单向Hash进行加密得到的密文

 

4.处理好相应的异常

后台的系统异常,很可能包含了一些如服务器版本、数据库版本、编程语言等等的信息,甚至是数据库连接的地址及用户名密码,攻击者可以按图索骥,找到对应版本的服务器漏洞或者数据库漏洞进行攻击,因此,必须要处理好后台的系统异常,重定向到相应的错误处理页面,而不是任由其直接输出到页面上.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、小H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值