只使用addslashes(字符串)可以防止SQL注入吗?

时间:2011-01-09 00:11:27

标签: php mysql

  

可能重复:
  What does mysql_real_escape_string() do that addslashes() doesn't?

如果没有,我使用了mysql_escape_string,它会在\ r \ n之类的单词中添加字符,我不希望这样......

4 个答案:

答案 0 :(得分:5)

不,这不安全。请改用mysql_real_escape_string()。除了转义字符串所需的内容之外,它不应该添加任何内容。

http://php.net/mysql-real-escape-string

这也适用于其他数据库:使用特定于扩展名的转义函数。

答案 1 :(得分:3)

不,addslashes不够好。 mysql_escape_string不一定足够好。使用mysql_real_escape_string

无论你喜欢它添加与否,它都无关紧要,它只会转义字符以确保查询语法有效。如果这妨碍了你正在做的事情,你就会做错事。

答案 2 :(得分:3)

防止SQL注入的最佳方法是使用带有mysqliPDO的预准备语句。

答案 3 :(得分:2)

您还可以选择使用mysqli函数和Prepared Statements。这在很大程度上避免了问题,因为所有引号都被视为数据的一部分。