在新标签页打开网址如何有安全漏洞让我们在网站的新标签页打开网址,HTML如下访问恶意网站!这里我们有一个指向恶意网站的href属性,并以_blank属性为目标,使其在新选项卡中打开。这个过程看起来很简单,用户在这里可能面临哪些安全风险?用户从您的页面重定向到域,此时浏览器将您当前网站的所有窗口变量内容附加到恶意网站的window.opener变量。现在恶意网站可以访问您网站的窗口,这显然会在重定向此方法时打开一个安全漏洞。一旦恶意网站通过window.opener访问到你网站的window变量,它就可以将你之前的网站重定向到一个新的钓鱼网站,这个网站可能与你实际打开的网站相似,甚至可能会要求你重新登录。在恶意网站中,只需编写以下代码即可完成上述修改陷阱,并提供可能暴露给攻击者的登录详细信息。我们怎样才能避免这种情况呢?一种简单的方法是将带有noopener的rel属性添加到标记。访问恶意网站!它有什么作用?rel="noopener"表示浏览器不应将当前网站的window变量附加到新打开的恶意网站。这使得恶意网站的window.opener值为空。因此,在将用户导航到您不维护的新域时要小心。我们并不总是用一个选项卡打开一个新选项卡,在某些情况下,您必须通过执行javascript的window.open()来打开它,如下所示:functionopenInNewTab(){//somecodewindow.open('https://malicious-domain.netlify.com');访问恶意网站!这里没有提到noopener,所以这会导致当前网站的窗口传递给恶意网站。通过js打开新标签页怎么办?函数openInNewTabWithoutOpener(){varnewTab=window.open();newTab.opener=null;newTab.location='https://malicious-domain.netlify.com';}访问恶意网站!我们通过window.open()打开了一个虚拟标签页,打开时about:blank,这意味着它还没有重定向到恶意站点。然后,我们将新标签的opener值修改为null。将我们新标签的URL更改为恶意网站的URL。这一次,opener又是空的,所以它无法访问第一个网站的window变量。问题已经解决了。但这在旧版本的Safari中不起作用,所以我们又遇到了问题。如何解决Safari的问题?函数openInNewTabWithNoopener(){constaTag=document.createElement('a');aTag.rel='noopener';aTag.target="_blank";aTag.href='https://malicious-domain.netlify.com';aTag.click();访问恶意网站!这里我们模拟点击锚标签。我们创建一个标签并分配所需的属性,然后对其执行click(),其行为与单击链接相同。不要忘记在此处将rel属性添加到标记中。其他事实:当您在锚标记上单击CMD+LINK时,Chrome、Firefox和Safari会将window.opener视为恶意站点的null。但是,在通过JavaScript处理新选项卡打开的元素上的CMD+LINK上,浏览器将附加window变量并将其发送到新选项卡。默认情况下,较新版本的Safari在所有情况下都会删除window.opener,并且要将窗口信息传递给新选项卡,您必须明确指定rel='opener'。没有人可以绕过您的“安全”。文章首发《前端外文精选》微信公众号继续阅读其他好评文章CSS中的间距,前端开发中各种设置间距的优缺点及实例122020年Vue.js开发小技巧【小技巧】如何CSS实现文字对齐效果?7道简单但有技巧的JavaScript面试题,让你2020年成为前端高手。9个项目【实战】Vue。上)【笔记】Web全栈工程师的自我修养(下)【小贴士】如何防止H5页面弹出手机虚拟键盘?拒绝JavaScript,这三个CSS技巧你一定要用好ChromeDevTools的7个隐藏功能,可以提高你的工作效率【图文教程】同步你的VSCode设置和扩展插件,换手机不用愁更多...