为什么说尽量使用preparedStatement 代替 statement

使用statement可能存在sql 注入的风险,下面是测试sql injection 的demo

假设登录的sql是通过字符串拼接出来的,那么我只要在用户名框里填上" 'xjbt' or 1=1 -- " 就可以无视判断直接进入系统,因为or 1=1恒成立,"--"将1=1后的语句全部注释,所以肯定能查出数据,当然,现在的网站都会做基本的防sql注入处理,不过出于安全性考虑,带参数的sql都应该用preparedstatement来代替statement。

这里用preparedstatement来代替statement

这里可以看到,什么都没有查出来。也就是or 1=1 --这个万能钥匙在这里失灵了,preparedstatement步入了电子锁的时代(误!),PreparedStatement防SQL注入的原理就是解析参数的每个字符,遇到特殊字符('或“就转义),并在参数的最前边和最后变分别添加一个单引号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值