1. ClickHiJacking 定义
点击劫持(Click Jacking)是一种视觉上的欺骗手段,攻击者通过使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,通过调整iframe页面的位置,可以使得伪造的页面恰好和iframe里受害页面里一些功能重合(按钮),以达到窃取用户信息或者劫持用户操作的目的。
Clickjacking是仅此于XSS和CSRF的前端漏洞,因为需要诱使用户交互,攻击成本高,所以不被重视,但危害不容小觑,攻击效果见案例。
2. 漏洞原理
对于漏洞的防范大部分浏览器支持的防御办法是使用X-Frame-Options头,通常设置为DENY可以很好地防范漏洞,其次SAMEORIGIN可以在某个页面失守时被绕过,ALLOW-FROM uri不被Chrome支持。其次还有CSP头:Content-Security-Policy: frame-ancestors 'self’仅支持FireFox。
也就是说,如果发现系统没有设置上述头,大概率存在ClickJacking漏洞,测试方法很简单,本地构造一个HTML文件,使用iframe包含此页面:
若返回拒绝请求,则不存在问题,控制台提示已设置X-Frame头故引用网站失败:
3. 解决办法
首先要明确业务是否真的需要iframe嵌套,如不允许被其它站点嵌套,请在web服务器配置中设置 X-Frame-Options:DENY,如要被嵌套使用,最好只允许 X-Frame-Options:SAMEORIGIN。 推荐使用X-Frame-Options方式修改。若想更好的防御请使用X-Frame-Options和JS防御结合。