【发布时间】:2016-02-12 02:48:09
【问题描述】:
在各种教程中,我发现他们都说“JWT 应该由环境变量签名,而不是硬编码到应用程序中”。从安全的角度来看,如果黑客要访问我的 Node.js 应用程序的源代码,我假设他们也可以看到服务器系统上的环境变量?从 Node 内部调用环境变量与对应用程序的源代码进行硬编码相比,在本质上如何更安全?
【问题讨论】:
在各种教程中,我发现他们都说“JWT 应该由环境变量签名,而不是硬编码到应用程序中”。从安全的角度来看,如果黑客要访问我的 Node.js 应用程序的源代码,我假设他们也可以看到服务器系统上的环境变量?从 Node 内部调用环境变量与对应用程序的源代码进行硬编码相比,在本质上如何更安全?
【问题讨论】:
这有几个原因。
1) 对于每个环境,您的 JWT 签名密钥应该不同(例如,您不希望您的开发人员知道您的生产签名密钥)。实现这一点的最简单方法是使用环境变量。
2) 你应该从代码库中抽象出秘密的东西。所以这要么意味着配置文件或环境变量。
3) 如果有人确实可以访问您的资源,他们至少不会拥有王国的钥匙。
4) 关注点分离。
【讨论】:
环境变量只能在正在运行的系统上使用。但是,您的源代码可能位于版本控制存储库(Github、Bitbucket 等)中、您的开发系统中、可能位于许多备份位置等中。
本质上一个环境变量在一个地方,你的源代码可能在多个地方。
【讨论】: