今天我发现Chrome(或者其他我还没有测试过的浏览器(存在安全问题。发生的情况是,一旦你打开一个网站,然后在同一选项卡中打开另一个网站时,该选项卡中的当前网站就可以访问上一个网站的全局变量。我在本视频中演示了这一点:https://www.youtube.com/watch?v=oDFKsLaecOs
浏览器应该解决这个问题,但有其他方法可以保护我们的全局变量吗?
这就是复制它的方法:
我登录到了excel.com网站,他们正在使用name
变量来存储当前登录的用户名。您可以在控制台中使用它并检查它的值。
现在转到同一选项卡中的任何其他站点,并尝试从extel访问该变量。您的姓名将被显示,或者只需在检查器中添加HTML中的一个按钮,点击即可显示姓名变量。
请参阅MDN上window.name
的描述。
您正在重命名窗口,而不是创建新的全局变量。
有其他方法可以保护我们的全局变量吗?
除非你真的这么想,否则不要给预定义的属性赋值。
首先还要避免使用全局变量。
什么时候需要使用全局变量,不要使它们成为隐式全局变量。使用let
或const
声明它们。