1

可能重复:
防御 mysql 注入和跨站点脚本的最佳方法
如何在 mysql 插入语句中包含 PHP 变量

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

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

4

2 回答 2

3

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

要防御 SQL 注入,请使用准备好的语句和参数化查询

于 2012-04-07T12:31:09.573 回答
1

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

对于 mysql 使用mysql_real_escape_string

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

  1. 准备一份声明。通常通过准备函数
  2. 绑定值。通常通过绑定函数。
  3. 执行语句。通常是执行函数。
于 2012-04-07T12:33:24.757 回答