gpt4 book ai didi

php - 使 SQL 查询安全 - 从 $_POST 获取值

转载 作者:行者123 更新时间:2023-11-30 01:20:41 24 4
gpt4 key购买 nike

我正在使用此代码来更新 mysql 表内的字段。

foreach ($_POST['changed'] as $SubArray) {
foreach ($SubArray as $key => $value) {
if ($key === 'recid') continue;

$STH = $DBH->prepare("UPDATE clients SET $key = '$value' WHERE id = $SubArray[recid]");
$STH->execute();
}
}

我认为查询中的 $key$value$SubArray[recid] 等变量非常不安全。有没有一种方法可以确保安全,确保 $_POST 不会让不需要的代码进入查询?

(不可能使用占位符调用列,因为我不知道表中的列名称)

最佳答案

只有在您确保 $key 的值安全时,这才是安全的。例如:

$approved = array('fname', 'lname' ,'email');
foreach ($_POST['changed'] as $SubArray) {
foreach ($SubArray as $key => $value) {
// if ($key === 'recid') continue; (Since we're using in_array - no need in this line)
if(in_array($key , $approved))
{
//$key is safe:
$STH = $DBH->prepare("UPDATE clients SET $key = :value WHERE id = :id");
$STH->execute(array(':value' => $value , ':id' => $SubArray['recid']));
}

}
}

更新请注意,您正在循环内使用循环,为了提高效率,请考虑更改您的代码。

关于php - 使 SQL 查询安全 - 从 $_POST 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com