struct tm
而不是
$_GET['id'] = mysqli_real_escape_string($d,$_GET['id']);
$id = mysqli_real_escape_string($d,$_GET['id']);
是否有效,或者是否有可能使mysqli_real_escape_string()
仍然危险(SQL注入)?
答案 0 :(得分:1)
转义取决于数据将被使用的上下文.MySQL真实转义不会对HTML注入,或格式不正确的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?
答案 1 :(得分:0)
两种方法都是安全的。因为$ _GET / $ _ POST / $ _ REQUEST参数是在PHP甚至到达文件执行之前设置的。
因此,从代码库中可以看出,没有什么能与你的$ _GET数组进行交互。