gpt4 book ai didi

php - 为什么 mysql_real_escape_string() 不应该避免任何 SQL 注入(inject)?

转载 作者:可可西里 更新时间:2023-11-01 06:32:20 25 4
gpt4 key购买 nike

我听到有人说(关于 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 OR 1=1,则没有特殊字符,也不会被过滤。

结果:返回所有行。

情况变得更糟。这个怎么样...如果 $_GET['user_id'] 设置为 1 OR is_admin = 1 会怎么样?

该函数仅设计为在单引号内使用。

关于php - 为什么 mysql_real_escape_string() 不应该避免任何 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com