什么是striplashes?

时间:2012-12-13 05:55:16

标签: php mysql function

  

可能重复:
  Using stripslashes after mysql_real_escape_string

我最近一直在阅读关于SQL注入的预防,我正在努力培养不同功能之间的一些理解,以便我可以学习基础知识。

我已经阅读过关于mysql_real_escape_string的内容,我知道它基本上是转义它认为“特殊”的字符,因此不会混淆SQL语法吗?

现在,假设至少在某种程度上是正确的 - 是否需要将stripslashes函数与mysql_real_escape_string结合使用?我想知道stripslashes是什么以及它是什么。

4 个答案:

答案 0 :(得分:12)

如果您在使用stripslashes后立即在输入上使用mysql_real_escape_string,则会有效撤消它。使用stripslashes可能还有其他原因,但在我的情况下,我只需要它来撤消魔法引号的恐怖。它实际上与addslashes相反。

addslashes 不一定转义输入与mysql_real_escape_string相同,并且它们不能用于同一目的。

甚至比mysql_*更好,你应该阅读使用PDO中的预备语句。那么你甚至不必担心mysql_*stripslashes(魔术引号除外)。

答案 1 :(得分:4)

函数stripslashes()将转义使用反斜杠\转义的字符。它通常用于通过addslashes()转义的字符串,或者如果您的PHP配置已启用magic_quotes

使用mysql_real_escape_string()之类的SQL转义函数时,不需要使用stripslashes(),因为MySQL适配器只会在插入数据库时​​转义值 - 斜杠不会保留在实际价值。如果您对已使用stripslashes()转义的变量使用mysql_real_escape_string(),则会删除斜杠,就好像它使用addslashes()进行转义一样 - 尽管毫无意义。

如果您的目标是阻止SQL注入,我强烈建议您查看与mysql_方法相对的MySQLiPDO。 MySQLi和PDO都提供了准备语句,如果使用得当,它们将阻止SQL-Injection,而不需要记住调用特殊的转义函数担心你的数据是否会被修改。

答案 2 :(得分:1)

stripslashes函数用于Un-quotes a quoted string

示例:

<?php
echo stripslashes("how\'s going on?");
?>

上面代码的输出将是:

how's going on?

更多详情:

http://php.net/manual/en/function.stripslashes.php

答案 3 :(得分:1)

结帐

http://php.net/manual/en/language.types.string.php
http://php.net/manual/en/function.stripslashes.php
http://php.net/manual/en/mysqli.real-escape-string.php

转义函数添加斜杠'\'以转义可用于终止有效查询STRINGS(而不是查询本身)的字符以防止注入。 stripslashes函数用于删除这些斜杠,但是它们在构建查询字符串时没有实际用途,因为它们会删除所需的斜杠。

来自MySQL的结果不会被“削减”(转义),因此在处理结果时不需要使用striplashes。