security - 哪些浏览器容易受到多个 x-frame-options 的影响

标签 security testing x-frame-options

我正在做一个网络应用程序测试,发现了一些与多个 x-frame-options header 条目有关的漏洞。哪些浏览器容易受到多个 x-frame-options 的影响?

Multiple x-frame-options header 条目有哪些可能的攻击? ClickJacking 似乎是一种艰难的方法,因为这在较新的浏览器中是不可能的。

最佳答案

根据RFC7034 [1],允许设置多个具有相同名称的消息头。当存在此类消息 header 时,它们通常会被串联起来 (Firefox),并且单个消息 header 由浏览器(客户端)形成,因为 RFC 允许这样做。

Multiple message-header fields with the same field-name MAY be present in a message if and only if the entire field-value for that header field is defined as a comma-separated list [i.e., #(values)]. It MUST be possible to combine the multiple header fields into one "field-name: field-value" pair, without changing the semantics of the message, by appending each subsequent field-value to the first, each separated by a comma.

对于消息头 X-FRAME-OPTIONS,只有这 3 个值被识别为有效; “DENY”、“SAMEORIGIN”和“ALLOW FROM”。这些值是互斥的,这意味着只有这些值应该存在,并且只有其中一个可以存在于 header 中。

假设服务器设置了 2 个同名的消息头。


HTTP/1.1 200 正常
服务器:nginx/1.11.3
日期:2017 年 5 月 24 日星期三 04:31:29 GMT
内容类型:text/html;charset=UTF-8
内容长度:5870
连接:保持事件状态
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-保护:1;模式=方 block
设置cookie:JSESSIONID=9F18D25951F107BE4C528CD787A3FE2F;路径=/;安全的;仅限HTTP
最后修改时间:2017 年 2 月 2 日星期四 22:41:36 GMT
ETag: W/"5870-1486075296000"
变化:接受编码
X-Frame-Options: SAMEORIGIN
严格传输安全:max-age=31536000;包含子域
X-Content-Type-Options: nosniff
X-XSS-保护:1;模式= block


请注意,服务器正在响应 2 个 X-FRAME-OPTIONS 消息头

X-FRAME-OPTIONS:DENY
X-FRAME-OPTIONS:SAMEORIGIN

在 Firefox(不仅仅是 Firefox)中,这将被浏览器引擎解释为 X-FRAME-OPTIONS:"DENY,SAMEORIGIN"。尽管 RFC 允许串联,但由于这些 header 值相互排斥,因此浏览器会尝试将 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/

希望您会发现此信息有用。 :)

干杯,
米琳达。

关于security - 哪些浏览器容易受到多个 x-frame-options 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137501/

相关文章:

javascript - 如何修复 JavaScript 中的开放重定向安全漏洞?

android - Android 权限以什么顺序显示?

selenium - 在 selenium 自动结束 2 结束测试期间关闭浏览器

csrf - CSRF 防御也可以防御点击劫持吗?

javascript - 如何在 iframe 上设置 'X-Frame-Options'?

security - Kerberos 委托(delegate)在 chrome 中不起作用

laravel - 如何将 Laravel 队列工作限制在一个执行结束导出?

node.js - Cypress 选择 HTML <select> 的特定子级

iframe - 拒绝在 iframe 中显示站点,X-Frame-Options 为 'SAMEORIGIN'

macos - Mac代码签名: Bypass the Keychain Access private key prompt from Terminal