php - 这是清理 php $_POST 输入的好方法吗?

标签 php mysql database post

<分区>

我已经在我的网站上使用这段代码很长时间了,只是想确保我正确清理了我的 PHP $_POST 输入...

foreach($_POST as $key=>$val) //this code will sanitize your inputs.
  $_POST[$key] = mysqli_real_escape_string($connection, $val);

例如,我有一个 POST 值 $_POST['comment'],我想将其添加到数据库中,这是一种在数据库输入之前对其进行清理的安全好方法吗?

foreach($_POST as $key=>$val) //this code will sanitize your inputs.
  $_POST[$key] = mysqli_real_escape_string($connection, $val);

  //is this safe? or is there another step?
  $comment = $_POST['comment'];

  if($comment != ""){
  //add $comment to database
  }

在将 $comment 添加到 MYSQL 数据库之前,我还需要做些什么吗?还是前两条线自己施展魔法?请让我知道这是否是一种安全的好方法,或者是否有更好的方法!谢谢!

最佳答案

可能重复:https://stackoverflow.com/questions/15664021/php-escaping-vars-posted-through-var-and-got-by-postvari-with-a-meth

我已经试过你的方法了。似乎没有神奇的功能。然而,从经典的 MySQL 注入(inject)中,您可以安全地添加 mysqli_real_escape_string 到每个发布的值,然后将其用作数据库中的字符串(带引号),但这被认为是不好的做法,也不是最安全的方式

由于 MySQLi 提供参数化查询,您应该熟悉它们,并将真正对应于数据库驱动程序的内容留给库。

关于php - 这是清理 php $_POST 输入的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659356/

相关文章:

php - DataTables:使用多个表、分组和 html 内容加速服务器端处理?

MySQL - INSERT INTO table SELECT WHERE field IN(子查询) - 使用 IN 使事情变得非常慢,正确的方法是吗?

MySQL 列出实体并在连接表上应用 AND 过滤器

database - 关于超文件数据库的建议

php - 如何在我的 HTML 表单中显示选定的用户输入?

php - PDO "Integrity constraint violation - Duplicate entry",但表中没有重复项

php - 优化此 SQL 查询的最佳方法是什么?

mysql - 只计算 MySQL 查询中连接的不同元素

phpMyAdmin 复制表

php - %LIKE% 检索例如。调用 MEN 时的 WOMEN DATA