【发布时间】:2017-10-23 13:34:23
【问题描述】:
我正在做一个 Web 应用程序测试,并发现有多个 x-frame-options 标头条目存在一些漏洞。哪些浏览器容易受到多个 x-frame-options 的攻击?
Multiple x-frame-options 标头条目可能受到哪些攻击? ClickJacking 似乎是一种困难的方法,因为这在较新的浏览器中是不可能的。
【问题讨论】:
标签: security testing x-frame-options
我正在做一个 Web 应用程序测试,并发现有多个 x-frame-options 标头条目存在一些漏洞。哪些浏览器容易受到多个 x-frame-options 的攻击?
Multiple x-frame-options 标头条目可能受到哪些攻击? ClickJacking 似乎是一种困难的方法,因为这在较新的浏览器中是不可能的。
【问题讨论】:
标签: security testing x-frame-options
根据RFC7034 [1],允许设置多个同名的消息头。当存在此类消息头时,它们通常被连接起来(Firefox),并且单个消息头由浏览器(客户端)形成,因为 RFC 允许这样做。
可能存在多个具有相同字段名的消息头字段 在消息中当且仅当该标头的整个字段值 字段被定义为逗号分隔的列表 [即,#(values)]。它必须 可以将多个标题字段合并为一个 “field-name: field-value”对,不改变语义 消息,通过将每个后续字段值附加到第一个,每个 用逗号分隔。
对于消息头 X-FRAME-OPTIONS,只有这 3 个值被识别为有效; “拒绝”、“SAMEORIGIN”和“允许”。这些值是互斥的,这意味着只有这些值应该存在,并且标头中也只能存在其中一个。
假设服务器设置了 2 个同名的消息头。
HTTP/1.1 200 正常
服务器:nginx/1.11.3
日期:格林威治标准时间 2017 年 5 月 24 日星期三 04:31:29
内容类型:text/html;charset=UTF-8
内容长度:5870
连接:保持活动
X-Frame-Options:拒绝
X-Content-Type-Options: nosniff
X-XSS-防护:1;模式=阻止
设置 Cookie:JSESSIONID=9F18D25951F107BE4C528CD787A3FE2F;路径=/;安全的; HttpOnly
最后修改时间:格林威治标准时间 2017 年 2 月 2 日星期四 22:41:36
ETag:W/“5870-1486075296000”
变化:接受编码
X-Frame-Options:SAMEORIGIN
严格的传输安全性:max-age=31536000;包括子域
X-Content-Type-Options: nosniff
X-XSS-防护:1;模式=块
请注意,服务器正在响应 2 个 X-FRAME-OPTIONS 消息头
X-FRAME-OPTIONS:拒绝
X-FRAME-OPTIONS:SAMEORIGIN
在 Firefox(不仅仅是 Firefox)中,这将被浏览器引擎解释为 X-FRAME-OPTIONS:"DENY,SAMEORIGIN"。尽管 RFC 允许串联,但由于这些标头值是互斥的,因此浏览器会尝试将 DENY,SAMEORIGIN 解释为一个单一元素,这会导致反点击劫持措施失败。
这是一个不错的博客 [2],它进一步解释了这一点,并且 [3] 谈到了类似的问题。
[1]https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html
[2]https://blog.qualys.com/securitylabs/2015/10/20/clickjacking-a-common-implementation-mistake-that-can-put-your-websites-in-danger
[3]https://wordpress.org/support/topic/multiple-x-frame-options-headers-with-conflicting-values-sameorigin-deny/
希望您会发现此信息有用。 :)
干杯,
米琳达。
【讨论】: