自 4.4.2 和 5.1.2(例如https://en.wikipedia.org/wiki/HTTP_response_splitting)或大约 9 年以来,已经解决了 PHP 的 HTTP 响应拆分 (HRS) 漏洞的大量引用。
然而 CVE-2013-2652 报告了一个使用 PHP 的 WebCollab 漏洞,尽管概念验证 ( http://archives.neohapsis.com/archives/bugtraq/2013-10/0117.html ) 指定了 PHP 版本5.4.7。问题识别在其问题陈述中使用“%0d%0a”。
我自己尝试过 PHP,它确实避免了允许插入 2 字节十六进制序列 0x0d0x0a,但它不会阻止插入 % 编码的等效 6 字符序列 %0d%0a。
至少从表面上看,这似乎有点矛盾。即 1) PHP 不像建议的那样 HRS 安全,因为它允许将 6 字符序列 "%0d%0a" 插入到标题中或 2) CVE-2013-2652 中所述的漏洞(即 "% 0d%0a" 被允许由 PHP 应用程序编写)至少被大大夸大了。
其中哪一个是真的?(或者完全是别的东西?)
(注意:a)我完全理解,无论是否有其他保护措施,最好验证或清理用户提供的数据。b) WebCollab 修复非常简单,就是这样做的:验证用户输入的允许字符。我对 PHP 的 HRS 安全性的稳健性以及任何危险的性质(如果存在)更感兴趣。)