【发布时间】:2012-07-06 23:15:19
【问题描述】:
我有时在 php 函数 header 中使用用户数据,如下所示:
header('Location : test' . $user_data);
我曾经删除 \n 和 \r 以防止标头注入,但还有其他换行符吗?我在我的例子中写了Location,但它可以是别的东西,我知道我必须验证和清理 URL,我的问题是关于标题中的新行。
【问题讨论】:
-
顺便说一下,
Location:标头必须是绝对 URL(即它必须从http://或您要使用的任何协议开始) -
相对的
Location:标头,尽管违反 RFC,但几乎可以在所有浏览器中正常工作。 -
我不明白:
header('Location: test.php');似乎可以工作(我刚刚尝试过),我可以使用相对 URL(PHP/Apache) -
@raina77ow:谢谢!我没有注意到这一点。 PHP 发送警告(我刚试过),并没有进行重定向。
-
rap-2-h,仅仅因为相对路径适用于您的浏览器并不意味着它们将适用于任何地方(网络浏览器不是浏览网络的唯一应用程序[例如搜索引擎机器人]) .
标签: php security http-headers code-injection