【发布时间】:2019-06-25 08:20:20
【问题描述】:
我编写了一个应用程序来查询需要我通过基本身份验证(标头中的 base64)提供的身份验证的 Jira API。密码存储在代码中,现在必须停止,因为我要交出代码。
当用户因密码计划更改密码时,应用应提示用户输入新的 Jira 密码,安全保存,并通过基本身份验证将其传递给 Jira API。
最好的方法是什么?
通常情况下,我们会对其进行散列,但这是不可能的,因为散列是单向的,我们需要将真实密码而不是散列传递给 Jira。
【问题讨论】:
-
您要将密码存储在数据库中,对吗?如果是这样,有可能在您的代码上使用带盐的散列来散列并将密码转换回普通字符串。
-
散列是一种单向“加密”,因此不可能将散列转换回字符串。使用像 AES 这样的对称加密,你所说的是可能的,但是任何有权访问代码的人都可以解密所有密码,因为程序必须有权访问加密密钥。
-
我认为大多数常见的应用程序都将加密密钥存储在代码中。您可以做的是将加密密钥存储在数据库中并配置表安全性,以便只有应用程序有权读取它。您可以使用行级安全性来执行此操作(例如 sqlshack.com/…)
标签: java security passwords jira password-storage