我正在尝试清理我的GET变量,但由于某种原因,Accuntrix仍在抱怨。
所以我访问了一个页面,URL包含参数。我在页面之间传递这些参数。要做到这一点我做 类似于以下内容
<a class="navbar-brand" href="https://someDomain/someFolder/someFile.php?WT.var1=<?php echo $_GET['WT_var1']; ?>&var2=<?php echo $_GET['var2']; ?>&var3=<?php echo $_GET['var3']; ?>&var4=<?php echo $_GET['var4']; ?>" title="logo"><img src="logo.png"></a>
我在页面上有很多像这样的链接,当我第一次运行页面时,它可以跨站点脚本,因为 我没有消除GET请求。所以在页面顶部,我把
<?php
$_GET['WT_var1'] = htmlspecialchars($_GET['WT_var1']);
$_GET['var2'] = htmlspecialchars($_GET['var2']);
$_GET['var3'] = htmlspecialchars($_GET['var3']);
$_GET['var4'] = htmlspecialchars($_GET['var4']);
?>
最初,这似乎有效。但是我最近又进行了另一次扫描,并且像上面这样的每一个链接都显示为高。 细节看起来像这样
URL encoded GET input WT.var1 was set to 1}body{acu:Expre/**/SSion(prompt(926954))}
The input is reflected inside a text element.
该漏洞看起来像这样
/someFolder/someFile.php?WT.var1=1%7dbody%7bacu:Expre/**/SSion(prompt(941830))%7d&var2=&var3=&var4=
虽然没有显示消毒的网址吗?这是我需要解决的问题还是虚假/消极的?
由于
答案 0 :(得分:2)
htmlspecialchars()
将您的变量编码为html页面中的内容输出。如果您需要通过网址传递变量,则需要urlencode(()
。
例如:
...someFolder/someFile.php?WT.var1=<?php echo urlencode($_GET['WT_var1']); ?>&var2...