首页 > 解决方案 > JS:保护数据不被控制台访问

问题描述

在一个简单的 HTML 页面中,我有一些如下所示的 JS

<script>

   let users;

   axios.get(url)
   .then((resp) => {
      users = resp.users;
   }) 
    
   // other stuff
</script>

users现在可以在控制台中访问,因为它位于窗口对象上。将所有这些逻辑包装在 IFFE 中会保护它不被访问吗?

<script>

   (function() {
      let users;

      axios.get(url)
      .then((resp) => {
         users = resp.users;
      }) 
      // other stuff
   })();

</script>

标签: javascript

解决方案


将所有这些逻辑包装在 IFFE 中会保护它不被访问吗?

只有非常少。或者在现代环境中,您可以添加type="module"到,script以便代码作为模块执行(模块的顶级范围不是全局范围)。

但是,这并不能真正保护数据。使用您网站的任何人都可以检查“网络”选项卡,或在 Axios 回调中设置断点,或使用网络嗅探器,或者...

您发送给客户端的任何数据都会与最终用户共享,如果他们想查看的话。如果您不希望他们看到它,请不要将其发送给他们。


推荐阅读