Javascript 在构建和运行之后,是否可以在浏览器中查看angular中声明的秘密变量?

Javascript 在构建和运行之后,是否可以在浏览器中查看angular中声明的秘密变量?,javascript,angular,typescript,Javascript,Angular,Typescript,我想对通过REST-API接收到的数据使用一个解密算法,因为我正在将密钥存储在角组件ts文件中 我想知道,在我构建和部署代码之后。我的密钥是否会在浏览器中的某个地方可见,因为构建的代码是服务器获取的纯javascript 我正在使用crypto js库对数据进行解密 var secret_key = "super-secret"; CryptoJS.AES.decrypt(ciphertext, secret_key) 是的,它将对寻找它的个人可见。您不应该在任何客户端代码中存储机密 一旦客

我想对通过REST-API接收到的数据使用一个解密算法,因为我正在将密钥存储在角组件ts文件中

我想知道,在我构建和部署代码之后。我的密钥是否会在浏览器中的某个地方可见,因为构建的代码是服务器获取的纯javascript

我正在使用crypto js库对数据进行解密

var secret_key = "super-secret";

CryptoJS.AES.decrypt(ciphertext, secret_key)

是的,它将对寻找它的个人可见。您不应该在任何客户端代码中存储机密

一旦客户端进行身份验证,就应该从服务器获取密钥

关于关键存储选项的好文章

WebCryptoAPI的第5.2节讨论了一些关于密钥存储的内容


这里的最佳实践是在后端(服务器端)执行加密/解密操作,并从API中获取解密值

如果您可以解释需要它的原因,可能是一个更好的方法

有三种不同的方法可以实现这一目标:-

  • 将角色/权限传递到本地存储,同时将其放入后端的会话表(或任何其他表)中。每次用户请求某些内容时,请检查角色/权限,以确保其未被修改
  • 将角色/权限存储在后端,例如会话表中,然后为每个请求提供角色/权限。这样,您就不必担心用户在任何时候进行任何修改
  • 在cookie中传递加密(RSA算法)角色/权限,并使cookie httpOnly为true和secure为true,这些cookie不能按照协议访问/修改,然后在每个请求中访问/修改

  • 浏览器中的任何内容都被视为已被破坏。不要这样做。如果你用javascript编写代码,代码将被发送到运行它的人的web浏览器。如果您的密钥是字符串,它将在源代码中清晰可见。我建议将密钥放在.env文件中,而不是服务器端的普通.js文件中。我希望加密本地存储数据,以便用户无法修改它。稍后,我将解密后的localstorage数据用于所有其他操作,如访问控制和权限。用户将始终能够修改localstorage数据。加密无法解决该问题。但解密在修改的本地存储数据上不起作用