bindParam中的POST变量

时间:2014-09-21 14:34:25

标签: php post pdo var

使用POST var是否安全,如下所示:

$stmt->bindParam(':'.$_POST[$field],$val);

或者我之前需要检查POST变量吗?

1 个答案:

答案 0 :(得分:0)

您应该使用$ _POST变量作为,而不是参数名称。

$ _POST变量可能包含空格或其他不是参数名称有效部分的字符。我担心如果你正在做你所展示的,你已经形成了这样的SQL查询:

$sql = "SELECT * FROM mytable WHERE mycolumn = :" . $_POST[$field];

肯定不安全。

并且没有理由将参数名称设置为这样的用户输入。参数名称应由程序员:

修复
$sql = "SELECT * FROM mytable WHERE mycolumn = :myparam";

然后使用相同的名称绑定。顺便说一句,只要您使用的是最新版本的PHP,就不需要在bind调用中使用冒号前缀。您只需要在SQL中使用它。

$stmt->bindParam("myparam", $_POST[$field]);