我正在做一个网络应用程序测试,发现了一些与多个 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/