我有 3 个域: domainA domainB domainC
如果我设置一个链接target="_blank",可以访问一堆属性。这就是我使用. 否则,像更容易的网络钓鱼这样的事情是可能的。考虑以下代码:domainAdomainCdomainCdomainAtarget="_blank" rel="noopener noreferrer"domainC
if(window.opener){
window.opener.location="http://phishing.com"
}
如果domainA包含类似的链接<a href="https://domainC.com" target="_blank">,条件将触发并重定向domainA到攻击者控制的域。其他属性,比如window.opener.length是可读的。
虽然它实际上并不是真正的漏洞,因为它是由 W3C 定义的,但大多数开发人员都不知道它。
现在,我想包含一个来自domainBin的 iframe domainA,我信任它,但它不受target="_blank"漏洞保护。
我测试并单击了 iframe 上的链接,它看起来不像window.opener它null那样noopener noreferrer,但我无法访问它的属性或方法。这样做时(例如:重定向),它会打印:
不安全的 JavaScript 尝试
domainB从带有 URL 的框架启动带有 URL 的框架的导航domainC。尝试导航的框架既不是与目标同源的,也不是目标的父级或开启者。
那么,我们可以认为在没有保护的情况下包含 iframe 是安全的target="_blank"吗?