我是 PHP 新手,我即将完成一个项目,但是我需要保护我的数据库免受 SQL 注入。我是否需要在我执行的每个 sql 查询上去除斜杠,或者我只需要为 sql INSERT/UPDATE 语句而不是 SELECT 语句执行它?还是对所有事情都这样做是最佳做法?
我不是在问如何防止 SQL 注入,我是在问何时使用它。
我是 PHP 新手,我即将完成一个项目,但是我需要保护我的数据库免受 SQL 注入。我是否需要在我执行的每个 sql 查询上去除斜杠,或者我只需要为 sql INSERT/UPDATE 语句而不是 SELECT 语句执行它?还是对所有事情都这样做是最佳做法?
我不是在问如何防止 SQL 注入,我是在问何时使用它。
strip_slashes()
不是你想要的。您应该使用准备好的/参数化查询,将数据与 SQL 分开,使其本质上不受此问题的影响。
将 PDO 或 mysqli 与准备好的语句一起使用。
还有很多其他方法可以使用 SQL 进行注入。如果你想要一个很好的例子,这里有一个:/*
在一个领域,*/
在另一个领域。中间的所有内容都将在没有参数化的情况下评论 MySQL4 和 MySQL5。
切换到 PDO/MySQLi 并从驱动程序请求真正的参数化。这将迫使驱动程序首先发送没有数据的请求,然后在另一个数据包中发送数据,从而强制合规,同时解决许多令人头疼的问题。
如果这还没有说服你,试试这个链接: http: //ferruh.mavituna.com/sql-injection-cheatsheet-oku/。