首页 > 解决方案 > 在 php ajax 过程中使用原始 $_POST 变量

问题描述

我想知道该代码是否容易受到 sql 注入的影响?

我的困境是基于$_POST直接使用变量的事实,而不像$something = $_POST['src'].

$sql = "update posts set img = :aimg where id = :aid";

$st = $db->prepare($sql);

$st->execute(array(
    ":aimg" => $_POST['src'],
    ":aid" => $_POST['id']
));

echo $_POST['src'];

标签: phpmysql

解决方案


您应该验证每个输入,在本例中为 $_POST['src'] 和 $_POST['id']。例如,如果 $_POST['id'] 必须是一个数字,则验证它,等等。请记住,客户端可能是其他东西而不是浏览器。当然,参数化是一个很好的做法,但你不能仅仅依赖它。对了,赋值 $something = $_POST['src']; 没什么区别。


推荐阅读