针对SQL注入的stripslashes的有效性?

时间:2012-04-07 12:27:28

标签: php sql database sql-injection stripslashes

  

可能重复:
  Best way to defend against mysql injection and cross site scripting
  How to include a PHP variable inside a mysql insert statement

我想知道是否有人在从密码字段获取文本时遇到stripslashes语句,并且在这种情况下是否有任何方法可以执行SQL注入?

即。在PHP语言中,您可以从网站的密码字段中获取文本,并通过stripslashes语句传递它以删除任何(')所以(' OR 1=1 --)变为(OR 1=1)。并且很难做到SQL注入。

2 个答案:

答案 0 :(得分:3)

stripslashes从数据中删除斜杠(\),它们是转义字符,而不是引号(')。如果有的话,它的使用将增加存在SQL注入漏洞的可能性。

防御SQL注入use prepared statements and parameterized queries

答案 1 :(得分:1)

stripslashes不应该用于密码。因为它可能会剥离用户有意输入的斜杠。根据您使用的rdbms防止sql注入转义。这将确保您输入完全相同的字符串用户输入但转义,因此不会发生SQL注入。

对于mysql使用mysql_real_escape_string

另一个更好的选择是使用预准备语句。它在所有最近的PHP数据库驱动程序中都可用。通用算法是

  1. 准备一份声明。通常通过准备功能
  2. 绑定值。通常通过绑定功能。
  3. 执行声明。通常是exec函数。