生成并运行后,是否可以在浏览器中查看在angular中声明的秘密变量?

时间:2019-05-31 14:30:21

标签: javascript angular typescript

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

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

我正在使用crypto-js库解密数据。

var secret_key = "super-secret";

CryptoJS.AES.decrypt(ciphertext, secret_key)

3 个答案:

答案 0 :(得分:1)

如果您可以解释这种情况的原因,则有机会获得更好的解决方法。

有3种不同的方法可以实现它:-

  1. 将角色/权限传递给本地存储,并将相同的时间传递到后端的会话表(或任何其他表)中。每次用户请求某些内容时都要检查角色/权限,以确保未进行任何更改。
  2. 将角色/权限存储在后端(例如会话表)中,然后针对每个请求提供角色/权限。这样,您不必担心用户随时进行任何修改。
  3. 通过cookie中的加密(RSA算法)角色/权限,并使cookie httpOnly为true和secure true,无法按照协议访问/修改这些cookie,然后在每个请求中都有

答案 1 :(得分:0)

是的,寻找它的人可以看到它。您绝不应该在任何客户端代码中存储机密。

一旦客户端认证,就应该从服务器获取密钥。

关于关键存储选项的好帖子 https://pomcor.com/2017/06/02/keys-in-browser/

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

https://www.w3.org/TR/WebCryptoAPI/

答案 2 :(得分:0)

此处的最佳做法是在后端(服务器端)执行加密/解密操作,并从您的API获取解密的值