我读这个问题(Should I use bindValue() or execute(array()) to avoid SQL injection?),并发现execute(array())和bindParam()都防止SQL注入处理PDO并准备好陈述。我应该使用bindParam(),bindValue(),或执行()PDO预处理语句
但是我也记得读书的地方,执行()自动将每一个变量为一个字符串,如果不管它是一个整数。我的问题肯定是除了字符串变量以外,这是一个安全问题?
例如,如果我是让在那里通过一个准备好的查询等于1的用户的ID,但是穿过执行参数将被视为一个字符串不是整数。
显然,这个脚本不会有任何用户输入的方法,并且只支持用户输入比如更新个人资料,邮寄等
我学习PDO所以我想充分了解如何编写安全的PDO查询(或更好的功能),可以防止/防范SQL注入和其他安全漏洞。
感谢
你可以强制与bindParam参数类型,如果这就是你要找的内容。 http://php.net/manual/en/pdostatement.bindparam.php http://php.net/manual/en/pdo.constants.php – Linesofcode
你也可以做到这一点与PDOStatement对象:: bindValue。 http://php.net/manual/en/pdostatement.bindvalue.php –