我需要一些帮助来确定我在数据库上存储密码的解决方案是否良好(安全)。信息安全是一个复杂的主题,所以我不确定我的解决方案是否弱,甚至是超能力。
我的应用程序需要在数据库上保存一些用户和密码,并使用它们登录另一个应用程序。此登录仅在服务器端发生。我们可以将此用户称为“提供者”。每个提供程序都有一个唯一的id
标识,它们来自前端应用程序,有必要知道需要使用哪个提供程序。
将密码存储在纯文本中不是替代方法。因此,我的想法是:使用每个提供商的盐使用一些秘密密钥来对每个密码进行加密。密钥保存在服务器应用程序中(Kubernetes密钥),并与盐信息一起用于解密密码。
所以,我们将有一个这样的表:
+------------+-------------------------+---------------------+----+
| Name | Password | Salt | id |
+------------+-------------------------+---------------------+----+
| Provider 1 | 7c73c5a83fa580b5d6f8208 | feacbc02a3a697b0 | 23 |
| Provider 2 | 23291ac8bc335a1277a39d2 | 3a6acbc02a97b0fe | 88 |
+------------+-------------------------+---------------------+----+
由于提供者的数量非常少(不超过20个),所以对我来说,每个提供者使用不同的盐似乎有点太多,但这是一个更安全的解决方案。
所以,我的问题是:这种解决方案对我的情况安全吗?