转!! PreparedStatement是如何防止SQL注入的
2017-01-04 11:20
381 查看
SQL注入最简单也是最常见的例子就是用户登陆这一模块,如果用户对SQL有一定的了解,同时系统并没有做防止SQL注入处理,用户可以在输入的时候加上’两个冒号作为特殊字符,这样的话会让计算机认为他输入的是SQL语句的关键字从而改变你的SQL语句,造成不可估量的损失。
在JDBC中通常会使用PreparedStatement来代替Statement来处理sql语句,如
使用PreparedStatement的好处是数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率,如果sql语句只执行一次,以后不再复用。
SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的;
PreparedStatement可以在传入sql后,执行语句前,给参数赋值,避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql和执行sql是在两个语句里面完成的,也提高了语句执行的效率 比如单引号会给你加一个转义,加个斜杠。上面的sql语句在数据库里执行就是这样
它会把恶意的注入语句预处理为参数
在JDBC中通常会使用PreparedStatement来代替Statement来处理sql语句,如
String sql = "select * from t_user where password = ?"; pt = conn.prepareStatement(sql); pt.setString(1, num); rs = pt.executeQuery();
使用PreparedStatement的好处是数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率,如果sql语句只执行一次,以后不再复用。
SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的;
PreparedStatement可以在传入sql后,执行语句前,给参数赋值,避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql和执行sql是在两个语句里面完成的,也提高了语句执行的效率 比如单引号会给你加一个转义,加个斜杠。上面的sql语句在数据库里执行就是这样
select * from t_user where password='ddd\' or \'1\'=\'1';
它会把恶意的注入语句预处理为参数
相关文章推荐
- ASP程序安全-如何防止sql注入
- 如何在程序中防止SQL注入
- 如何防止web项目中的sql注入
- T-SQL篇如何防止SQL注入的解决方法
- CI(codeigniter)如何防止sql注入
- 如何防止SQL注入漏洞
- 如何防止sql注入
- ASP.NET如何防止SQL注入
- 什么叫做SQL注入,如何防止
- T-SQL篇如何防止SQL注入的解决方法(2)
- 2006年08月09日 星期三 上午 07:29防止sql注入,通常一个一个文件修改不仅麻烦而且还有漏掉的危险,下面我说一上如何从整个系统防止注入。
- 网站安全:整站如何防止SQL注入方式入侵
- 从别人的一个“如何防止SQL注入“的帖子联想出来的一个有趣的解决方案”
- T-SQL篇如何防止SQL注入的解决方法
- java如何防止sql注入
- asp.net如何防止SQL注入
- 如何防止SQL注入(还在学习当中)
- php网站如何防止sql注入?(PHP注入的安全规范)
- 什么是sql注入,如何防止sql注入漏洞攻击
- 【转载】51CTO-如何防止SQL注入的解决方法