php - 这至少是适度安全的 php 代码吗?

标签 php mysql security post mysql-real-escape-string

我有一堆 $_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 处理所有事情,这就是它的全部意义(如果您真的将所有数据都放在参数中,那就是 - 只是连接字符串来构建 SQL 语句会导致 PDO 或不使用 PDO 的灾难)。预先转义值会导致数据库中出现转义值。

关于php - 这至少是适度安全的 php 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759149/

相关文章:

php - Heroku 上的数据库名称和用户密码和主机

php - php 如何判断是否按下了未知 ID 的按钮

php - 如何向 LIKE 查询添加更多选项

php - 获取今天、昨天和本周的记录

mysql - SQL 带计数的连续记录

python - 如何从以色列统计局网络查询工具中抓取数据?

security - tls 与 hpkp 之间的性能

php - 阻止 Laravel 在异常中包含跟踪

java - 使用 Spring Security 保护 Spring Cloud 功能

php - 如何在 Laravel 5.2 框架中创建 sqlite 文件?