Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何避免HTTP头插入(新行字符)_Php_Security_Http Headers_Code Injection - Fatal编程技术网

Php 如何避免HTTP头插入(新行字符)

Php 如何避免HTTP头插入(新行字符),php,security,http-headers,code-injection,Php,Security,Http Headers,Code Injection,我有时在php函数标题中使用用户数据,如下所示: header('Location : test' . $user_data); 我曾经删除\n和\r以防止页眉插入,但是否还有其他新行字符?在我的示例中,我写了位置,但它可能是其他内容,我知道我必须验证和清理URL,我的问题是关于标题中的新行。引用: (自4.4.2和5.1.2起)该功能现在可防止多个 要立即发送的标头,以防止标头注入 攻击 因此,我认为即使您已经进行了CRLF替换也没有必要。顺便说一句,位置:标题必须是绝对URL(即它必须从h

我有时在php函数
标题中使用用户数据,如下所示:

header('Location : test' . $user_data);
我曾经删除
\n
\r
以防止页眉插入,但是否还有其他新行字符?在我的示例中,我写了
位置
,但它可能是其他内容,我知道我必须验证和清理URL,我的问题是关于标题中的新行。

引用:

(自4.4.2和5.1.2起)该功能现在可防止多个 要立即发送的标头,以防止标头注入 攻击


因此,我认为即使您已经进行了CRLF替换也没有必要。

顺便说一句,
位置:
标题必须是绝对URL(即它必须从
http://
或您将要使用的任何协议开始)相对
位置:
标题,尽管与RFC相反,几乎所有浏览器都能按预期工作。我不明白:
header('Location:test.php')
似乎有效(我刚刚尝试过),我可以使用相对URL(PHP/Apache)@raina77ow:谢谢!我没注意到。PHP发送了一个警告(我刚刚尝试过),但没有重定向。rap-2-h,仅仅因为相对路径与您的浏览器一起工作并不意味着它们在任何地方都可以工作(web浏览器不是浏览web的唯一应用程序[例如,搜索引擎机器人])(假设使用的是>4.4.2或>5.1.2)。是的,但是您接着说“所以我想即使你已经更换了CRLF也没有必要。”这是一种假设,因此如果有人跳过了报价,他们也会认为他们也不必这么做(人们不会读哈哈)。谢谢!我没有注意到。PHP发送了一个警告(我刚刚尝试过),并且没有重定向(但我的问题仍然有效,因为我的应用程序与PHP5.1.X兼容,所以我现在无法接受您的回答(可能稍后,我现在投票+1))我知道它很旧,但我今天(2017年1月6日)才发现,使用PHP5.2.17,PHP只允许使用CR(\r,ASCII 13,%0D)的多行标题,不幸的是,它被Chrome浏览器视为一个新行,允许页眉插入。我希望它对查看此页面的人有用。