【问题标题】:Is PHP immune to "HTTP Response Splitting" vulnerabilities?PHP 对“HTTP 响应拆分”漏洞免疫吗?
【发布时间】:2011-06-09 03:10:55
【问题描述】:
<?php
setcookie('test', "test\r\n<script>alert(1)</script>");
echo 1;

但事实证明 PHP 会自动进行编码:

Set-Cookie: test=test%0D%0A%3Cscript%3Ealert%281%29%3C%2Fscript%3E

这是否意味着无法在 PHP 中重现 HTTP response splitting

【问题讨论】:

  • 即使是过时的 php 版本也会过滤所有 header 和 setcookie 调用。为什么不直接输出带有 echo 的 script 标签呢?
  • @mario,请查看我上面提供的链接。
  • 那又如何呢?它没有解释 your 问题的目的。否则答案很简单:是的,在当前的 php 版本中不可重现。维基百科文章用一整段来解释这一点。
  • @mario ,整个http响应拆分都在header中完成,而echo只在body中输出东西跨度>
  • 如果可能通过弄乱字符串编码来实现。 (即 UTF-7 和 UTF-8 混合)

标签: php security http-headers exploit


【解决方案1】:

来自linked 维基百科文章:

[...] 虽然响应拆分不是 PHP 特有的,但 PHP 解释器从 4.4.2 和 5.1.2 版本开始包含针对攻击的保护。 [1]

headersetcookie 包含针对响应/标头拆分的缓解措施。这是不可能的。

【讨论】:

  • 是否可以禁用保护?
  • @mario 你怎么知道 setcookie 是免疫的?我找不到关于 setcookie 和响应拆分的任何参考资料
  • @charlieb 基本上只是将其构造转发给 header():github.com/php/php-src/blob/…
猜你喜欢
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2014-05-21
  • 2020-11-05
  • 2022-01-18
相关资源
最近更新 更多