如何在LAMP应用程序中阻止SQL注入?

7 php mysql sql lamp

以下是开始对话的几种可能性:

  1. 初始化时撤消所有输入.
  2. 转义每个值,最好是在生成SQL时.

第一个解决方案是次优的,因为如果你想在除SQL以外的任何东西中使用它,你就需要对每个值进行转换,比如在网页上输出它.

第二种解决方案更有意义,但手动转义每个值是一种痛苦.

我知道准备好的陈述,但我发现MySQLi很麻烦.此外,将查询与输入分开关注我,因为尽管使订单更正是至关重要的,但是很容易犯错误,因此将错误的数据写入错误的字段.

Rob*_*ker 10

准备好的陈述是最好的答案.你有测试,因为你可以犯错误!

看到这个问题.


pix*_*x0r 7

正如@Rob Walker所述,参数化查询是您最好的选择.如果您正在使用最新最好的PHP,我强烈建议您查看PDO(PHP数据对象).这是一个本机数据库抽象库,它支持广泛的数据库(当然包括MySQL)以及带有命名参数的预处理语句.