parse_str& sql_injection(mysql_real_escape_string)

时间:2015-04-13 06:42:59

标签: 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'])

或者

parse_str($_POST['form'],$query)
INSERT INTO xyz(id,name) VALUES(1,$query['name'])
print_r($query)

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

1 个答案:

答案 0 :(得分:1)

parse_strmysql_real_escape_string使用不同的编码。 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字符串文字之前,mysql_real_escape_string必须始终正确。

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