我编写了一个查询Jira API的应用程序,该API需要通过基本身份验证(标头中的base64)提供的身份验证。密码已存储在代码中,该代码现在必须停止,因为我想移交代码。
当用户由于密码计划而更改密码时,应用程序应提示用户输入新的Jira密码,安全地保存它,然后通过基本身份验证将其传递给Jira API。
最好的方法是什么?
通常,我们会对其进行哈希处理,但这是不可能的,因为哈希处理是单向的,我们需要将真实密码传递给Jira而不是哈希。
答案 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.