sprintf的格式符与单引号能防止大部分sql注入
本帖最后由 yakczh 于 2011-04-27 08:22 编辑数值格式符
$arr=array('table'=>'user','username'=>'yak','salary'=>'3000 or 1=1');
extract($arr);
echo sprintf("update %sset salary=salary+1000 where username=%s andsalary = %d",$table,$username,$salary);
对于字符串格式符加单引号
$arr=array('table'=>'user','username'=>'yak or 1=1','salary'=>'3000 or 1=1');
extract($arr);
echo sprintf("update %s set salary=salary+1000where username='%s' andsalary > %d",$table,$username,$salary);
遗憾的是php没有perl的变量列表,不然就可以把整个$arr传给sprintf了,不用一个一个写了 了解了。顶。。。 一般都这么干吧 一般都这么干吧 简单测试了下,sprintf是字符串连接的花的时间的一倍
字符串连接 2
sprintf 4
str_replace 10
eval(sprintf) 8
页:
[1]