作者:风铃草549天王 | 来源:互联网 | 2023-09-13 19:22
篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP的header()函数中的CRLF( r n)相关的知识,希望对你有一定的参考价值。
为什么/何时必须在php的标题末尾使用CRLF?这是一个例子(它不一定正确):
header("method: POST
");
header('Host: '.get_option('transact_url')."
");
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: '.strlen($transaction)."
");
header($transaction."
");
header("Connection: close
");
header("Location: ".$key_client_url."
");
答案
你永远不应该在header()内部进行手动换行。当前的实现删除了换行符,因此您可以安全,但这可能在将来发生变化(尽管没有理由应该更改它)。
另一答案
如果它是PHP,这段代码是无稽之谈。
header()
函数用于发送答案标题,而其中一些标题是请求标题。
你可以看到这段代码,因为编写它的人没有任何线索。
另一答案
让我的登录全部混合,所以我发帖,虽然这是对halfdan的评论。如果有人可以,请随意更正。
link
我在链接中看到了这一点,没有人提到你刚才告诉我的内容,所以我认为它与Linux的行结尾有关。当然,这是我在header()中唯一一次看到“ r n”。
另一答案
Halfdan是对的。这是解释。
请求行和标题必须以CRLF结尾(即回车符后跟换行符)。空行必须只包含其他空格而不包含其他空格。
Request = Request-Line ; Section 5.1
*(( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 4.3
来源:w3c.org - Hypertext Transfer Protocol -- HTTP/1.1
另一答案
有一种方法可以将
添加到php 4中的标题,这是可以被利用的漏洞,使用CRLF注入攻击查看PHP HTTP Header Multiple Vulnerabilities。