我听过有人说(关于C#/
sql Server,但也与
PHP /
MysqL有关):不要手动转义字符串 – 而是使用存储过程.
好的,我可以接受这个建议,但为什么呢?很多人说(包括在SO上)MysqL_real_escape_string()就足够了,MysqL_real_escape_string()是好的,MysqL_real_escape_string()是第一种保护方式.
为什么?有没有MysqL_real_escape_string()失败的情况?至少一个……我不需要很多:)
当
MysqL_real_escape_string失败时:
$sql = "SELECT * FROM users WHERE id=" + MysqL_real_escape_string($_GET['id']);
如果$_GET [‘user_id’]设置为1或1 = 1,则没有特殊字符且未过滤.
结果:返回所有行.
它变得更糟.怎么样…如果$_GET [‘user_id’]设置为1或is_admin = 1怎么办?
该功能仅用于单引号内部时使用.
原文链接:https://www.f2er.com/php/137674.html