$_GET['id'] = mysqli_real_escape_string($d,$_GET['id']);
代替
$id = mysqli_real_escape_string($d,$_GET['id']);
这是否安全,或者是否有可能 mysqli_real_escape_string()
不起作用,这使得 $_GET['id']
仍然很危险( SQL 注入(inject))?
最佳答案
转义取决于将要使用数据的上下文。MySQL 真正的转义对 HTML 注入(inject)、格式不正确的 CSV 值或任何其他需要转义字符的文本格式没有任何作用。阅读The Great Escapism (Or: What You Need To Know To Work With Text Within Text) .
当您替换 $_GET
数据时,这意味着您接下来的所有代码现在都必须处理特定的 SQL 转义数据。如果您有任何不处理 SQL 的代码怎么办?这就是为什么这是糟糕的做法。
情况更糟,因为您应该简单地使用参数化查询而不是手动转义。参见 How can I prevent SQL injection in PHP?
关于php - 在同一值内保护真正的转义字符串安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46343863/