mysql sql注入分析_著名的sql注入问题-问题的原因分析及总结

###**Statement安全漏洞(sql注入问题)**

**产生原因:**

因为SQL语句拼接,传入了SQL语句的关键字,绕过了安全检查.

客户端利用JDBC-【Statement】的缺点,传入非法的参数,从而让JDBC返回不合法的值,我们将这种情况下,统称为SQL注入。

**解决方案:**

使用PreparedStatement对象就可以解决。PreparedStatement对象预处理对象。允许使用占位符对SQL语句中的变量进行占位。对SQL语句进行预先编译。传入SQL语句的关键字,不会被当成关键字而是普通的字符串。包括:程序执行时动态为?符号设置值,安全检查,避免SQL注入问题,预处理能力

select * from user where username = ? and password = ?

**Statement与PreparedStatement的区别**

现在项目中都不直接用Statement了,而用PreparedStatement。

PreparedStatement它除了具有Statement是所有功能外,

还有动态SQL处理能力,包括:程序执行时动态为?符号设置值,安全检查,避免SQL注入问题,预处理能力。

Statement只能处理静态SQL

1,PreparedStatement既能处理静态SQL,又能处理动态SQL,它继承了Statement的特点

2,站在预处理这个角度来说的:

PreparedStatement【适合】做连续多次相同结构的SQL语句,有优势。

Statement【适合】做连续多次不相同结构的SQL语句,有优势。

适合:是只效率会更高,但并不表示一定要这才样

3,PreparedStatement

1_支持动态SQL,也支持静态SQL

2_预处理

---相同结构的SQL

select id,name from users where id = 1

select id,name,gender from users where id = 2;

是不相同结构

---不同结构的SQL

声明:

静态SQL也可以用PreparedStatement

适合:

静态SQL---优先Statement

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值