如何隐藏 JavaScript 中的变量值?

How do I hide a variable value in JavaScript?

我目前正在做一个 JavaScript 项目并且知道 JavaScript 源代码可以通过浏览器访问。在代码中,我有一个变量存储程序使用的秘密字符串。但是,我不想让别人查看源代码,找出这个变量的值。 是否有隐藏变量值的方法?或者是否可以在之后更改变量值?例如,更改实际源代码以将变量设置为不同的值?此变量仅在第一次加载图像时使用,因此如果可能的话,完全删除它也是可以的。

Javascript 在客户端上是 运行,所以我认为这是不可能的。任何你需要保密的东西都需要在服务器端。

JavaScript是客户端,反正也没有什么隐藏代码。

您可以做什么: 防止普通用户看到它(也就是让它更难找到)

我的建议是使用某种密码(最好不是在线加密工具)来加密数据。这会阻止最懒惰的 人看到它。

(假设实际上没有人试图找到这个神秘的值)

您无法向程序员隐藏 JavaScript 内容。他们可以随时打开开发人员控制台并获取您的所有变量。

更糟糕的是,他们可以使用所述控制台直接绕过任何 JavaScript 验证,因此它不是您的主要安全措施。

如果这是您必须隐藏或保护的东西,您必须研究服务器端解决方案。

好吧,您可以将整个代码放入一个函数中,然后在同一个脚本中执行它。这对我有帮助。

你问的暂时不可能。

但是有一个 JavaScript 提议 Function implementation hiding,顾名思义,它隐藏了函数实现以防止被观察到。该提案起源于 2019 年年中,目前处于第 2 阶段(共 4 个阶段)。我个人怀疑它是否会成为标准的一部分,但如果确实如此,理论上你可以将秘密隐藏在隐藏函数的 body 中:

function fetchData() {
  "sensitive"; // ← the proposal

  const SECRET = "VGhlIG1lc3NhZ2UgaXM6IFIyeHZjbmtnZEc4Z1ZXdHlZV2x1WmZDZmg3cnduNGVt";

  return fetch(DATA_URL, {
    headers: {
      "Authorization": `Bearer ${SECRET}`,
    },
  });
}

无法通过调试器或 fetchData.toString() 检查 SECRET 变量。但是,Authorization header 的值在控制台的网络选项卡中可见,因此整个事情不适合此用例。