Javascript JS:保护数据不被控制台访问

Javascript JS:保护数据不被控制台访问,javascript,Javascript,在一个简单的HTML页面中,我有一些JS,如下所示 <script> let users; axios.get(url) .then((resp) => { users = resp.users; }) // other stuff </script> 将所有这些逻辑包装在IFFE中是否可以防止其被访问 <script> (function() { let users;

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

<script>

   let users;

   axios.get(url)
   .then((resp) => {
      users = resp.users;
   }) 
    
   // other stuff
</script>
将所有这些逻辑包装在IFFE中是否可以防止其被访问

<script>

   (function() {
      let users;

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

</script>
只是非常少。或者在现代环境中,您可以将type=module添加到脚本中,以便代码作为模块执行。模块的顶级作用域不是全局作用域

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

如果最终用户希望查看,则向客户端发送的任何数据都将与最终用户共享。如果你不想让他们看到,不要把它发给他们

将所有这些逻辑包装在IFFE中是否可以防止其被访问

<script>

   (function() {
      let users;

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

</script>
只是非常少。或者在现代环境中,您可以将type=module添加到脚本中,以便代码作为模块执行。模块的顶级作用域不是全局作用域

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


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

您的代码将无法工作!请看@FZs,这不是OP要问的。请再次查看您可以将其从全局窗口对象中删除,但您所说的“保护”还意味着什么?如果你试图阻止用户查看这些数据,那你就做不到。@David right,他们可以查看正在进行的网络呼叫并查看响应,但我的意思是保护可变可访问性。我的例子可能不好,但如果我定义了一个我想要保护的常量,那么这可能是一个比为网络设置变量更好的例子response@RicardoAlvveroa你甚至不知道用户是否正在通过网络浏览器访问你的网站;它可能是任何东西。你的代码无法工作!请看@FZs,这不是OP要问的。请再次查看您可以将其从全局窗口对象中删除,但您所说的“保护”还意味着什么?如果你试图阻止用户查看这些数据,那你就做不到。@David right,他们可以查看正在进行的网络呼叫并查看响应,但我的意思是保护可变可访问性。我的例子可能不好,但如果我定义了一个我想要保护的常量,那么这可能是一个比为网络设置变量更好的例子response@RicardoAlvveroa你甚至不知道用户是否正在通过网络浏览器访问你的网站;它可以是任何东西。谢谢TJ…也许是我使用网络电话的一个坏例子。如果它不是一个网络调用,只是我定义的一个常量呢?数据从哪里来没有任何区别。它在用户的计算机上,他们总是有办法访问它。@RicardoAlvveroa-常量将在JavaScript文件中定义,该文件将通过网络发送到客户端。我担心,即使看不到它也很容易。感谢TJ……也许是我使用网络电话的一个坏例子。如果它不是一个网络调用,只是我定义的一个常量呢?数据从哪里来没有任何区别。它在用户的计算机上,他们总是有办法访问它。@RicardoAlvveroa-常量将在JavaScript文件中定义,该文件将通过网络发送到客户端。我担心,即使看不到它也很容易。如果他们真的看到了,他们就能看到。