跨框架脚本(XFS)漏洞使攻击者能够在恶意页面的 HTMLiframe 标记内加载易受攻击的应用程序。攻击者可以使用此漏洞设计点击劫持攻击,以实施钓鱼式攻击、框架探查攻击、社会工程攻击或跨站点请求伪造攻击。个人理解就是其他网站会在他的iframe中调用我的网站内容,来截取他人的点击事件或者窃取他人敏感信息。
1.怎么测试出此安全性问题
本地编写一个iframe.html页面文档,内容如下。
<html>
<head>
<title>IE Cross Frame Scripting Restriction Bypass Example</title>
<script>
var keylog='';
document.onkeypress=function(){
k=window.event.keyCode;
window.status=keylog += String.fromCharCode(k)+'['+k+']';
}
</script>
</head>
<body>
<frameset onload="this.focus();" onblur="this.focus();" cols="100%">
<iframe src="https://this.is.myweb.com" scrolling="auto" height=100% width=100%/>
</frameset>
</body>
</html>
https://this.is.myweb.com
是自己的页面url,如果能正常点击进入自己的页面,则有此安全问题。
2.修复办法
2.1 nginx增加配置
修改nginx服务器配置,添加X-frame-options响应头。赋值有如下三种:
(1)DENY:不能被嵌入到任何iframe或frame中。
(2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中,也就是同源的支持。
(3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
nginx的configmap里面配置
add_header X-Frame-Options "SAMEORIGIN";
配置后,重启nginx服务器后,清除浏览器缓存后,再次点击iframe.html文件,会有以下报错:
网页无法打开位于 https://this.is.myweb.co 的网页无法加载,因为:net::ERR_CACHE_MISS
2.1 前端增加代码
<script>if(top !=selt){top.location=self.location;}if(window != window.top ){window.top.location.href = correctURL;}***业务代码
参考:
https://codeleading.com/article/7179940468/
https://blog.csdn.net/yanner_/article/details/81428965