如果一个链接上用到了 target = '_blank'属性且未加上 rel = "noopener noreferrer" 属性,则攻击者可以利用漏洞进行钓鱼攻击。在用户点击到钓鱼链接后,攻击者可以通过使用window.opener.location强迫用户的前一个页面跳转到钓鱼页面,欺骗用户在钓鱼页面上登录,窃取用户口令。
漏洞存在场景:
NO1、使用target='_blank',且无rel="noopener"或rel="noopener noreferrer"属性。
NO2、使用window.open,但第二个参数使用默认值(即以_blank或默认方式打开)。
这两种使用情况都存在安全漏洞。
修复方法:
针对NO1的情况,在标签上加上rel="noopener noreferrer"属性即可。
针对NO2的情况:
错误写法:window.open('evil.html', '_blank'); 或window.open('evil.html');
正确写法:var win=window.open("evil.html",'_blank');win.opener=null;