Php 解析_str&;sql\u注入(mysql\u real\u escape\u字符串)
我有一个关于parse_str和mysql_real_String的问题。 我可以这样做,并将影响所有参数的形式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
$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: '"\