带参数的PHP头位置

quhf5bfb  于 11个月前  发布在  PHP
关注(0)|答案(4)|浏览(50)

是否可以在PHP Header Location中附加一个参数?我没法让它工作。这种语法实际上是允许的吗?

$qry = $_SERVER['QUERY_STRING'];
header('Location: http://localhost/blast/v2/?$qry ') ;

它只是不会用它的实际值替换$qry...为什么??
在浏览器中,它最终看起来像这样:
http://localhost/blast/v2/?$qry
谢谢

mbzjlibv

mbzjlibv1#

  • 重要提示:* 如果你不能确定$qry是安全的,请不要使用它!**

将单引号更改为双引号:

header("Location: http://localhost/blast/v2/?$qry");

PHP中的单引号字符串被视为 string literal,不会解析为变量。
双引号字符串 * 被 * 解析为变量,所以你将得到$qry包含的任何附加内容,而不是字面上的$qry

ilmyapht

ilmyapht2#

你也可以通过一个header添加多个参数,比如:

$divert=$row['id']."&param1=".($param1)."&param2=".($param2);
header("Location:showflagsab.php?id=$divert");

其将两个附加参数添加到原始ID
可以在它们的目的地使用$get方法提取它们

e0uiprwp

e0uiprwp3#

我知道这是一个很老的帖子,但请不要这样做。标头中的参数易受XSS攻击。你可以在这里阅读更多关于XSS'ing的内容:owasp.org/index.php/Cross-site_Scripting_(XSS)

3ks5zfa0

3ks5zfa04#

wiles如何修复头位置上的XSS攻击

$param = $_REQUEST['bcd'];
header("Location: abc.php/?id=$param");

相关问题