逃逸和在GET
问题描述:
我有此链接:逃逸和在GET
http://localhost/dow.php?url=/site.net/page.php?action=download&id=3424&authkey=234234324242342
和
$_GET["url"]
应该
=/site.net/page.php?action=download&id=3424&authkey=234234324242342`
但是当我尝试
print $_GET["url"];
它只打印/site.net/page.php?action=download
问题很明显与&字符,我试图htmlspecialchars($_GET["url"])
没有运气。 我能做些什么来获得整个字符串?
答
不是因为另外两个参数不同而造成的。
你需要让他们每个人分开。像$_GET['id'], $_GET['authkey']
或者你可以只使用foreach
结构。
foreach($_GET as $k=>$v)
{
$myparams[$k]=$v;
}
echo $myparams['authkey'];// "prints" 234234324242342
答
我不知道你在哪里得到了目标网址,但在打印它之前尝试对它进行编码。 即encodeURIComponent
函数在JS中,rawurlencode
在PHP中,或者只是使用这个ref here来代替任何你想要的HTML字符。 rawurldecode
它在$_GET['url']
之后。
答
为了让你将不得不使用完整的请求$_SERVER['QUERY_STRING'];
如:
echo $_SERVER['QUERY_STRING'];
对其进行编码打印您的链接之前,然后你点击它后对其进行解码 – ElefantPhace