2011-01-09 24 views
0

可能重复:
What does mysql_real_escape_string() do that addslashes() doesn't?SQL注入可以防止只用addslashes(字符串)?

如果没有,我已经使用函数mysql_escape_string,并将其添加字符如\ r \ n中的话,我不希望出现这种情况..

+3

`mysql_real_escape_string`不会向最终数据添加任何内容。如果发生这种情况,请另外提出一个问题,可能还有其他问题 – 2011-01-09 00:16:36

+2

如果您在使用mysql_real_escape_string()添加内容时遇到问题,请确保Magic Quotes已关闭。 – keithjgrant 2011-01-09 00:21:00

回答

5

不,这不安全。改为使用mysql_real_escape_string()。它不应该添加任何东西来超越它所需的字符串。

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

这也适用于其他数据库太:使用特定的扩展逃逸功能。

3

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

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

2

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

3

防止SQL注入的最佳方法是使用准备语句与mysqliPDO