mar*_*zzz 8 php mysql security sql-injection
我听过有人说(关于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']);
Run Code Online (Sandbox Code Playgroud)
如果$_GET['user_id']
设置为1或1 = 1,则没有特殊字符且未过滤.
结果:返回所有行.
它变得更糟.怎么样......如果$_GET['user_id']
设置为1或is_admin = 1?
该功能仅用于单引号内部时使用.
归档时间: |
|
查看次数: |
2060 次 |
最近记录: |