在 Web 应用程序中隐藏非常敏感的凭据的正确方法

Proper way of hiding very sensitive credentials in a web application

我目前正在开发 spring 引导 Web 应用程序。它是一个 REST api 代理,使用一些非常敏感的凭据连接到另一个 api。凭据目前是硬编码的,但显然它们不应该是硬编码的。隐藏它们的正确方法是什么?

我考虑过使用一些库,比如 jasypt 来对它们进行编码,并将编码后的值放在属性文件中,密钥隐藏在某个地方,也许在系统变量中,(但是这只是另一层混淆,不是吗?)

如何正确隐藏这些敏感凭据?

您可以使用您的服务器环境来隐藏您的属性。只需将真实凭据存储在您的生产服务器 application.properties 上并保护访问权限,因此只有您的应用程序才能访问 属性 文件。

根本问题是,如果您需要在计算机程序的内存中明文保存安全凭证,并且有人拥有 "root" 访问机器,那么这些人之一就有可能获得对凭据的访问权限。

因此您需要设计安全性,以便永远不需要将凭据保存在服务器的内存中。

如果你真的想解决这个问题,你需要调查一下Hardware Security Modules。但是,HSM 方法将变得复杂且昂贵,并且可能需要您重新设计身份验证协议。