问题:响应头未设置X-Frame-Options
描述:
由于应用未设置响应头X-Frame-Options,易受到点击劫持攻击。点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的
iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户在不知情的情况下点击了透明的iframe页面。通过调整iframe页面
的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上,攻击者常常配合社工手段完成攻击。例如,攻击者通过flash构造出的点击
劫持,可以控制用户电脑的摄像头。随着触屏技术的发展,点击劫持的攻击方式也更进一步,由于手机屏幕范围有限,手机浏览器为了节省空间
把地址栏隐藏起来,因此在手机上的视觉欺骗更容易实施。
漏洞解决方案:
- 通过javascript代码来禁止iframe的嵌套,即frame busting方法。
- 通过设置响应头X-Frame-Options来限制iframe的加载,DENY:拒绝
浏览器加载任何frame页面,SAMEORIGIN:frame页面地址只能是同源域名下的页面, ALLOW-FROM:可自定义允许frame加载页面地址。 - 此外,有的浏览器厂商也增加扩展功能来防御clickjacking,如firefox的”content security policy"和"No-script"
具体操作
nginx:
配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:
## 表示该页面可以在相同域名页面的 frame 中展示
add_header X-Frame-Options SAMEORIGIN;
## 表示该页面可以在指定来源的 frame 中展示
#add_header X-Frame-Options "ALLOW-FROM http://domain.com";
参考文章:
https://blog.csdn.net/qq_25934401/article/details/81384876