这是至少适度安全的 php 代码吗?
-
09-09-2019 - |
题
我有一堆 $_POST 变量通过长格式发送,而不是用一个硬编码每个变量 mysql_escape_string()
我可以执行以下操作吗?我不知道这是否真的是安全和/或可行的代码。
foreach ($_POST as &$post_item){
$post_item = mysql_escape_string($post_item);
}
我相当确定,因为我使用的是 &,它是通过引用而不是值传递它,所以我实际上是在更改 $_POST 中的值。
另外,我应该使用 mysql_real_escape_string()
反而?
编辑:我正在使用 PDO 和prepare() 以及上述方法。这能帮我解决吗?
解决方案
为什么不使用 array_map()
?
array_map(mysql_real_escape_string, $_POST);
但实际上您应该使用参数化/准备好的语句。
mysql_real_escape_string()
考虑当前数据库字符集, mysql_escape_string()
才不是。所以相比之下,前者是更好的选择。
编辑(跟进OP对问题的编辑):
由于您已经执行了 PDO 准备语句,因此无需修改您的值。PDO 负责一切,这就是它的重点(如果真的把所有数据都放在参数里的话,那就是 - 无论是否使用 PDO,仅连接字符串来构建 SQL 语句都会导致灾难。预先转义这些值会导致数据库中出现转义值。
不隶属于 StackOverflow