在php ajax过程中使用原始$\u post变量

erhoui1w  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(330)

我想知道代码是否易受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'];
fiei3ece

fiei3ece1#

基本上,$post=$\u post['src']&&$\u post['src']是相同的。通过将值赋给一个变量,没有任何安全增强。查询看起来是安全的。准备好的语句和参数化的变量使事情变得安全。

jpfvwuh4

jpfvwuh42#

您应该验证每个输入,在本例中是$\u post['src']和$\u post['id']。例如,如果$\u post['id']必须是一个数字,请验证该数字,依此类推。请记住,客户端可以是另一个东西,而不是浏览器。当然,参数化是一个很好的实践,但你不能仅仅依靠它。顺便说一句,分配$something=$\u post['src'];没什么区别。

相关问题