存储用于传递到另一服务的密码

时间:2019-06-25 08:20:20

标签: java security passwords jira password-storage

我编写了一个查询Jira API的应用程序,该API需要通过基本身份验证(标头中的base64)提供的身份验证。密码已存储在代码中,该代码现在必须停止,因为我想移交代码。

当用户由于密码计划而更改密码时,应用程序应提示用户输入新的Jira密码,安全地保存它,然后通过基本身份验证将其传递给Jira API。

最好的方法是什么?

通常,我们会对其进行哈希处理,但这是不可能的,因为哈希处理是单向的,我们需要将真实密码传递给Jira而不是哈希。

1 个答案:

答案 0 :(得分:1)

如果存储的字符串在出现违例时需要保护,或者出于一般软件数据安全的考虑,则应进行加密。例如,在您的情况下,当用户使用密码时,应在存储之前由软件对其进行加密。检索时,密码被解密并转换为Jira接受登录握手的哈希(或base64)。

除了简单的加密和解密之外,一种更好的方法是在加密时使用盐,并在循环中使用多种加密,以避免暴力破解。

伪代码:

unsafe_password = getPasswordFromUser()
salt = getRandomString();
safePassword = encrypt(unsafe_password, salt, key)

// Store the password
putEntryInDB(user, safePassword, salt)

// Retrieve password
[passwordSalt, encryptedPassword] = getSaltAndEncryptedPasswordFromDB()

unsafePassword = decrypt(encryptedPassword, passwordSalt, key)

// Now login into Jira with the actual user's password (unsafePassword)

P.S. You'll be needing to store a key in the code or in some software's configuration.

来源:尝试4&5 https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/