父页面操做iframe子页面的安全漏洞及跨域限制问题

1、父子交互的跨域限制css

同域状况下,父页面和子页面能够经过iframe.contentDocument或者parent.document来交互(彼此作DOM操做等,如父页面往子页面注入css)。ajax

跨域状况下,就会有限制,没法相互操做。跨域

【解决办法】安全

1.主域不一样
  没招cookie

2.主域相同,子域不一样
  以父(a.baidu.com)子(b.baidu.com)为例:
  这俩页面相互操做,要是想解决跨域限制,必须设置一个共同的主域,即document.domain="baidu.com"dom

 

2、禁止父页面操做子页面xss

如今不少公司的各个业务线都使用了同一套通行证体系,有时候为了方便不一样业务线接口间的相互调用,会把a.baidu.com、b.baidu.com等的domain都设置为baidu.com,这就形成了必定的安全隐患。网站

黑客能够经过寻找某个安全防范较薄弱的业务线网站,好比c.baidu.com,绕过字符过滤注入xss攻击代码,在c.baidu.com的页面中建立一个x.baidu.com的iframe,往iframe中注入js代码,而后利用共享的通行证中的cookie和token,调用x.baidu.com中的某些ajax请求,对x.baidu.com进行跨站攻击。url

【屏蔽掉此漏洞方案】spa

1.营造跨域,如上所述,跨域状态下,父子无权互相操做。各业务线的document.domain在使用完主域以后,必定要及时设置回本身的二级域名去。

2.禁止本站页面被其余页面以iframe形式调用。判断当前页若是被iframe包含,那么就改变当前页的url,从而避免被继续注入js脚本。

代码以下:

if (window.location.href!==top.location.href) location.href = "about:blank";//直接用window !== top(ie7-布尔值异常)跳转至空页面 也能够是任意url。如,http://ni.nongshalei

相关文章
相关标签/搜索