在网页中使用链接时,如果想要让浏览器自动在新的标签页打开指定的地址,通常的做法就是在
a
标签上添加target等于"_blank"
属性。然而,就是这个属性,为钓鱼攻击者带来了可乘之机。
起源
parent
与
opener
在说
opener
之前,可以先聊聊
<iframe>
中的
parent
。
我们知道,在
<iframe>
中提供了一个用于父子页面交互的对象,叫做
window.parent
,我们可以通过
window.parent
对象来从框架中的页面访问父级页面的
window
。
opener
与
parent
一样,只不过是用于
<a target="_blank">
在新标签页打开的页面的。通过
<a target="_blank">
打开的页面,可以直接使用
window.opener
来访问来源页面的
window
对象。
同域与跨域
浏览器提供了完整的跨域保护,在域名相同时,
parent
对象和
opener
对象实际上就直接是上一级的
window
对象;而当域名不同时,
parent
和
opener
则是经过包装的一个
global
对象。这个
global
对象仅提供非常有限的属性访问,并且在这仅有的几个属性中,大部分也都是不允许访问的(访问会直接抛出
DOMException
)。