我正在进行网络应用测试,发现在使用多个x-frame-options标头条目时存在一些漏洞。哪些浏览器易受多个x-frame选项的攻击?
多个x-frame-options标头条目可能有哪些攻击? ClickJacking似乎是一种很难的方法,因为对于较新的浏览器来说这是不可能的。
答案 0 :(得分:5)
根据RFC7034 [1],允许设置多个具有相同名称的消息头。当存在这样的消息头时,它们通常是连接的(Firefox),并且浏览器(客户端)形成单个消息头,因为RFC允许这样做。
可能存在具有相同字段名称的多个消息头字段 在消息中,当且仅当该标头的整个字段值 字段被定义为以逗号分隔的列表[即,#(值)]。它必须 可以将多个标题字段合并为一个 " field-name:field-value"对,不改变语义 消息,通过将每个后续字段值附加到第一个,每个 用逗号隔开。
对于消息头X-FRAME-OPTIONS,只有这3个值被识别为有效; " DENY "," SAMEORIGIN "和" 允许来自"。这些值是互斥的,这意味着只应存在这些值,并且标题中只能存在其中一个值。
让我们说服务器设置2个同名的邮件标题。
HTTP / 1.1 200 OK
服务器: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-Protection:1;模式=块
Set-Cookie:JSESSIONID = 9F18D25951F107BE4C528CD787A3FE2F;路径= /;安全;仅Http
最后修改时间:2017年2月2日星期四22:41:36 GMT
ETag:W /" 5870-1486075296000"
变化:接受编码
X-Frame-Options:SAMEORIGIN
严格运输安全:max-age = 31536000; includeSubDomains
X-Content-Type-Options:nosniff
X-XSS-Protection:1;模式=块
请注意,服务器正在响应2 X-FRAME-OPTIONS 消息标题
X-FRAME-OPTIONS:DENY
X-FRAME-OPTIONS:SAMEORIGIN
在Firefox(不仅仅是Firefox)中,浏览器引擎会将其解释为 X-FRAME-OPTIONS:" DENY,SAMEORIGIN" 。由于这些标头值尽管RFC允许连接,但它们是互斥的,浏览器会尝试将 DENY,SAMEORIGIN 解释为一个sngle元素,并导致反点击劫持措施失败。
这是一个很好的博客[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/
希望您能发现此信息有用。 :)
干杯,
弥兰陀