使用POST var是否安全,如下所示:
$stmt->bindParam(':'.$_POST[$field],$val);
或者我之前需要检查POST变量吗?
答案 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]);