iframe跨框架脚本攻击,安全问题解决办法

跨框架脚本(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中配置此规则之后,无法生效,一些博客说是因为浏览器的版本太新了,其实这个是不准确的。这是一个被弃用的指令,不再适用于现代浏览器,请不要使用它。在支持旧版浏览器时,页面可以在指定来源的 frame 中展示。请注意,在旧版 Firefox 上,它会遇到与 SAMEORIGIN 相同的问题——它不会检查 frame 所有的祖先页面来确定他们是否是同一来源。Content-Security-Policy. HTTP 首部有一个 frame-ancestors 指令,你可以使用这一指令来代替。

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
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Frame-Options

你可能感兴趣的:(Others,安全)