首页 > 解决方案 > 在同一选项卡中打开的其他网站可访问的全局变量

问题描述

今天我发现 Chrome (或者我还没有测试过的其他浏览器)存在安全问题。发生的情况是,一旦您打开一个站点,然后在同一选项卡中打开另一个站点,则该选项卡中的当前站点可以访问前一个站点的全局变量。我已经在这个视频中展示了它:https ://www.youtube.com/watch?v=oDFKsLaecOs

浏览器应该解决这个问题,但是还有其他方法可以保护我们的全局变量吗?

这是您可以重现它的方式:

我登录到 exotel.com 网站,他们正在使用一个name变量来存储当前登录的用户名。您可以在控制台中使用它并检查其值。

现在转到同一选项卡中的任何其他站点并尝试从 exotel 访问该变量。您的姓名将被显示,或者只是在检查器中添加一个来自 HTML 的按钮,然后单击该显示名称变量。

标签: javascripthtmlgoogle-chromesecurityfirefox

解决方案


参见MDN 上的描述window.name

您正在重命名窗口,而不是创建新的全局变量。


还有其他方法可以保护我们的全局变量吗?

不要为预定义的属性赋值,除非你是认真的。

还要避免首先使用全局变量。

什么时候需要使用全局变量,不要让它们成为隐式全局变量。let使用or声明它们const


推荐阅读