当前位置:  开发笔记 > 编程语言 > 正文

在PHP中清理查询字符串

如何解决《在PHP中清理查询字符串》经验,为你挑选了2个好方法。

我有一个带有查询字符串的网页.

在PHP我有:

$querystring=$_SERVER["QUERY_STRING"];
echo "
test
";

我需要清理查询字符串吗?
如果是,如果不这样做,我该如何消毒以及可能的攻击是什么?



1> webinista..:

如果您运行的是PHP> = 5.2.0,请使用filter_inputfilter_input_array.

假设你的URL和查询字符串是这样的http://example.com/?liquor=gin&mixer=tonic&garnish=lime.

要进行过滤,您可以执行以下操作.

/*
 FILTER_SANITIZE_STRING removes most dangerous characters. That may 
 not always be what you want. Read the PHP filters docs. 

 We are also overwriting the $_GET array (the query string) with the sanitized
 versions of these variables.
*/

$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);

/* 
rebuild query string using white listed variables, 
not $_GET to prevent variable injection as M?rti?š Briedis 
suggests above.
*/

$qv['liquor']  = $_GET['liquor'];
$qv['mixer']   = $_GET['mixer'];
$qv['garnish'] = $_GET['garnish'];

# build and URL encode the query string using the above array.
$querystring = http_build_query( $qv );



2> Mārtiņš Brie..:

您应该使用htmlspecialchars($query, ENT_QUOTES)以防止任何XSS攻击.

echo "
test
"

但是,您应该列出任何参数,因为智能攻击者可以伪造查询并尝试CSRF攻击.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有