-1

我是 PHP 新手,我即将完成一个项目,但是我需要保护我的数据库免受 SQL 注入。我是否需要在我执行的每个 sql 查询上去除斜杠,或者我只需要为 sql INSERT/UPDATE 语句而不是 SELECT 语句执行它?还是对所有事情都这样做是最佳做法?

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

4

4 回答 4

4

strip_slashes()不是你想要的。您应该使用准备好的/参数化查询,将数据与 SQL 分开,使其本质上不受此问题的影响。

于 2013-04-03T18:48:39.940 回答
3

将 PDO 或 mysqli 与准备好的语句一起使用。

于 2013-04-03T18:48:56.560 回答
3

还有很多其他方法可以使用 SQL 进行注入。如果你想要一个很好的例子,这里有一个:/*在一个领域,*/在另一个领域。中间的所有内容都将在没有参数化的情况下评论 MySQL4 和 MySQL5。

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

如果这还没有说服你,试试这个链接: http: //ferruh.mavituna.com/sql-injection-cheatsheet-oku/

于 2013-04-03T18:52:18.613 回答
1

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

如果您想要全面保护,请使用SafeMysql

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

好问题。

  1. 你不需要任何保护或预防。
  2. 您必须正确格式化查询。总是。
于 2013-04-03T19:06:58.360 回答