来源:自学PHP网 时间:2015-04-17 15:08 作者: 阅读:次
[导读] 在java里,有一个PreparedStatment的东西,不知道.net里有没有,这个东西比较身心,如果.net里有类似的东西,可以用。另外,还有种方法,输入参数里过滤 and select这些sql关键字,但是这个...
在java里,有一个PreparedStatment的东西,不知道.net里有没有,这个东西比较身心,如果.net里有类似的东西,可以用。 另外,还有种方法,输入参数里过滤 and select这些sql关键字,但是这个方法不是很先进。这样过滤,如果正常业务里有这些关键字就不行了。 sql的注入在于组装别有用心sql的语句。例如: insert into table (id,content) values ((SELECT 1 FROM USER WHERE ROWNUM <2),xxxx) select * from table where id=1 OR 1=1 select * from table where name=XX OR 1=1 对于上面的情况,我们只要保证2件事即可防止SQL注入: 1. 对于数字,必须保证是数字,而不是"1 or 1=1" 由于判断一个参数是不是只包含数字效率不是很高,where id=1 这种写法可以写成 where id=1.这样以来,只需要对所有参数转义单引号即可。 把所有参数打上引号,而不考虑是数字和字符串。这样没有问题。反而是一个好习惯。因为有的数据库设计,有可能设计ID的类型为字符串。如果这样的设计,id=1这样的写法用不上id这个字段的索引 以上是我的经验,数据库特制Oracle数据库,其他数据库我不熟悉,估计差不多
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com