为什么应该使用环境variables对JSON Web Tokens(JWT)进行签名?

在各种教程中,我发现他们都说“JWT应该由环境variables签名,而不是硬编码到应用程序中”。 从安全的angular度来看,如果黑客获得Node.js应用程序源代码的访问权限,我假设他们也可以在服务器的系统上看到环境variables? 从节点内部调用一个环境variables与对应用程序的源代码进行硬编码调用本质上是如何更安全的?

有几个原因。

1)您的JWT的签名密钥应该针对每个环境而不同(例如,您不希望开发人员知道您的生产签名密钥)。 最简单的方法是使用环境variables。

2)你应该从代码库中提取秘密的东西。 所以这意味着一个configuration文件或环境variables。

3)如果有人能获得你的来源,他们至less不会有王国的钥匙。

4)分离关注。

环境variables只能在正在运行的系统上使用。 然而,您的源代码可能在版本控制库(Github,Bitbucket等)中,在开发系统上,可能在许多备份位置等等。

本质上,一个环境是可变的是在一个地方,你的源代码可能是多个。