Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅使用addslashes(string)就可以防止SQL注入吗?_Php_Mysql - Fatal编程技术网

Php 仅使用addslashes(string)就可以防止SQL注入吗?

Php 仅使用addslashes(string)就可以防止SQL注入吗?,php,mysql,Php,Mysql,可能重复: 如果没有,我使用了mysql\u escape\u字符串,它会在单词中添加字符,如\r\n,我不希望这样。不,这不安全。改用mysql\u real\u escape\u字符串。它不应该添加任何超出转义字符串所需的内容 这也适用于其他数据库:使用特定于扩展的转义函数。不,addslashes不够好。mysql\u escape\u字符串不一定足够好。使用 您是否喜欢它添加的内容并不重要,它只会转义字符以确保查询语法有效。如果这妨碍了您的工作,则说明您做错了。您还可以选择使用mysq

可能重复:

如果没有,我使用了mysql\u escape\u字符串,它会在单词中添加字符,如\r\n,我不希望这样。

不,这不安全。改用mysql\u real\u escape\u字符串。它不应该添加任何超出转义字符串所需的内容

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

不,addslashes不够好。mysql\u escape\u字符串不一定足够好。使用


您是否喜欢它添加的内容并不重要,它只会转义字符以确保查询语法有效。如果这妨碍了您的工作,则说明您做错了。

您还可以选择使用mysqli函数和准备好的语句。这从一开始就基本上避免了这个问题,因为所有的引号都被视为数据的一部分。

防止SQL注入的最佳方法是将prepared语句与or一起使用。

mysql\u real\u escape\u string不会向最终数据添加任何内容。如果这种情况发生在你身上,请另提一个问题,可能还有其他问题。如果你在mysql\u real\u escape\u字符串添加内容时遇到问题,请确保禁用Magic Quotes。它位于你的php.ini文件中:@michaeltonchev它确保以正确的方式为SQL字符串转义所有内容,不仅仅是引用。这里有一个很好的解释: