也许是一个愚蠢的问题。通过 打开新选项卡时target="_blank"
,允许在该选项卡中加载的页面使用以下方法在父选项卡中设置新位置:
window.opener.location.replace('http://www.google.com');
这不违反同源政策吗?我可以很容易地将该重定向指向一个看起来与原始站点完全相同的恶意站点。
也许是一个愚蠢的问题。通过 打开新选项卡时target="_blank"
,允许在该选项卡中加载的页面使用以下方法在父选项卡中设置新位置:
window.opener.location.replace('http://www.google.com');
这不违反同源政策吗?我可以很容易地将该重定向指向一个看起来与原始站点完全相同的恶意站点。
我不认为这违反了同源策略,因为子选项卡无法访问父选项卡中的数据或修改其内容。
这可能是这样设计的,以便让 Web 开发人员在处理多个窗口时提供更好的用户体验。
另一方面,这绝对是 Web 开发人员应该注意的事情,并且仅target="_blank"
在需要此特定功能时才使用。
防范这种攻击很容易,大多数大型网站(google.com、twitter.com 等)通过在 window.opener 属性设置为 null 的新选项卡中打开链接来做到这一点。
这已作为错误报告给 Chromium 团队,但它被标记为 WontFix,因为它不被认为是错误:
用户决定通过检查 URL 并确定来源来信任特定选项卡。在所有情况下,两个选项卡区域始终显示所显示内容的正确来源。
在 android 上,当将任何数据输入到表单中时,始终会显示原点,即使它之前已通过向下滚动而被忽略。然后,用户可以根据这个可见的来源做出信任决定。
鉴于此,除了用户点击链接并访问新页面之外,我认为用户没有任何风险,因此我将关闭 WontFix。