PHP,SQL注入以及何时使用它

时间:2013-04-03 18:47:27

标签: php sql security sql-injection

我是PHP的新手,我即将完成一个项目,但是我需要保护我的数据库免受SQL注入。我是否需要在每次sql查询时删除斜杠,或者我只需要为sql INSERT / UPDATE语句而不是SELECT语句执行此操作?或者最好的做法是为所有事情做到这一点?

我不是在问如何防止SQL注入,我在问他什么时候使用它。

4 个答案:

答案 0 :(得分:4)

strip_slashes()不是你想要的。您应该使用准备/参数化查询,这些查询将数据与SQL分开,从而使其在此问题上具有内在的安全性。

答案 1 :(得分:3)

将PDO或mysqli用于准备好的陈述。

答案 2 :(得分:3)

还有很多其他方法可以使用SQL注入。如果你想要一个很好的例子,这里有一个:/*在一个字段中,*/在另一个字段中。介于两者之间的所有内容都将在没有参数化的情况下在MySQL4和MySQL5上发表评论。

切换到PDO / MySQLi并从驱动程序请求真正的参数化。这将迫使驱动程序首先发送没有数据的请求,并发送另一个数据包中的数据,从而强制遵守,同时解决许多令人头疼的问题。

如果尚未说服您,请尝试以下链接:http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/

答案 3 :(得分:1)

使用PDO。不是“PDO或MySQLi”,而是PDO。它是唯一可靠的驱动程序(虽然提供的保护不足)。

如果您想要完整保护,请使用SafeMysql

  

我不是在问如何防止SQL注入,我在问他什么时候使用它。

好问题。

  1. 您不需要任何保护或预防。
  2. 您必须正确格式化查询。 ALWAYS。