Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 解析_str&;sql\u注入(mysql\u real\u escape\u字符串)_Php_Mysql_Sql Injection - Fatal编程技术网

Php 解析_str&;sql\u注入(mysql\u real\u escape\u字符串)

Php 解析_str&;sql\u注入(mysql\u real\u escape\u字符串),php,mysql,sql-injection,Php,Mysql,Sql Injection,我有一个关于parse_str和mysql_real_String的问题。 我可以这样做,并将影响所有参数的形式 $post_data = mysql_real_escape_string($_post['form']); parse_str($post_data,$query) print_r($query) INSERT INTO xyz(id,name) VALUES(1,$query['name']) 或 所以问题是,如果mysql_real_escape_String

我有一个关于parse_str和mysql_real_String的问题。 我可以这样做,并将影响所有参数的形式

 $post_data =  mysql_real_escape_string($_post['form']);
  parse_str($post_data,$query)
  print_r($query)
  INSERT INTO xyz(id,name) VALUES(1,$query['name'])

所以问题是,如果mysql_real_escape_String影响$_POST['form']的所有POST参数,或者我必须在SQL中显式地生成该语句?

并使用不同的编码
parse_str
解码百分比编码,mysql_real_escape_string无法识别该编码:

$_post['form'] = 'name='.rawurlencode('\'"\\');
$post_data =  mysql_real_escape_string($_post['form']);
parse_str($post_data, $query);
echo $query['name'];  // output: '"\
您需要按正确的顺序应用编码
mysql\u real\u escape\u string
必须在将值放入mysql字符串文本之前出现


一如既往,将值作为准备语句提供的参数传递是更好的解决方案。

更好的方法是将准备好的语句一起使用……假设您的意思是
$\u POST
,而不是
$\u POST
,为什么您要提交带有url编码数据的表单值?请停止尝试想出巧妙的新方法来转义数据,这正是安全漏洞产生的原因。逃逸每一个字符串都是单调乏味的,但这是正确的方法。(…显然是在使用事先准备好的陈述之后的第二选择。)我很感激你的回答。非常感谢。
$_post['form'] = 'name='.rawurlencode('\'"\\');
$post_data =  mysql_real_escape_string($_post['form']);
parse_str($post_data, $query);
echo $query['name'];  // output: '"\