mysql_escape_string整个帖子数组?

Nov*_*ing 10 php mysql sql sql-injection

我想知道是否有可能只需my_sql_escape字符串整个$ _POST和$ _GET数组,所以你不会错过任何变量?

不知道如何测试它或我会自己.谢谢!

Bai*_*ker 12

我会用这个array_walk()功能.它更适合因为修改POST超全局,因此将来的任何使用都会被清理.

array_walk_recursive( $_POST, 'mysql_real_escape_string' );
Run Code Online (Sandbox Code Playgroud)

但是,请确保您不依赖此行来完全保护您的数据库免受攻击.最好的保护是限制某些字段的字符集.防爆.电子邮件中没有引号(因此只允许使用字母,数字,@,破折号等),并且名称中没有括号(因此只允许使用字母和选定的特殊字符)

编辑:改变array_walk()array_walk_recursive()感谢@约翰的建议.道具给他.

  • -1你应该使用`array_walk_recursive`,因为如果你的任何$ _POST项包含一个数组,这段代码就会失败. (4认同)

Kev*_*vin 5

$escaped_POST = array_map('mysql_real_escape_string', $_POST);
Run Code Online (Sandbox Code Playgroud)

不过,我建议改用MySQLi.