【发布时间】:2015-04-15 10:49:22
【问题描述】:
我发现了一个有趣的bug report 与 X-Frame-Options 标头相关。但我不明白这怎么可能是安全问题。
以下代码作为漏洞证明:
require 'net/http'
require 'uri'
uri = URI.parse("https://play.google.com/#{"a" * 10000}")
@r = Net::HTTP.get_response uri
ret = @r.each_header {|x| puts x}
if ret["x-frame-options"]
puts ret["x-frame-options"]
else
puts "Missing x-frame-options!"
end
但它试图访问一个无效的 URL (https://play.google.com/aaaaaaaaa...) 并返回一个错误页面。在响应中,缺少 x-frame-options 标头。我不明白这怎么可能是一个安全漏洞(因为它是一个无效页面并且它是一个错误响应)?这如何用于点击劫持?为什么错误响应也应该设置此标头很重要?
【问题讨论】:
-
最好在security.stackexchange.com上询问。
-
错误页面与其他页面一样只是一个 HTML 页面。在 Google Play 的案例中,他们的系统没有将
X-Frame-Options标头放入 HTTP 响应中以生成错误页面。这意味着该页面可能容易受到点击劫持,如果攻击者可以通过诱骗用户点击那里获得任何内容。从链接中不清楚此页面上显示的内容 - 如果您可以显示应用程序的安装按钮,那么您可以让用户安装您的恶意应用程序。
标签: javascript security http owasp clickjacking