Сохранить пароль для перехода на другой сервис - PullRequest
2 голосов
/ 25 июня 2019

Я написал приложение, которое запрашивает Jira API, для которого требуется аутентификация, которую я предоставляю через обычную аутентификацию (base64 в заголовке).Пароль был сохранен в коде, который должен быть остановлен сейчас, потому что я хочу передать код.

Когда пользователи изменяют свои пароли из-за расписания паролей, приложение должно запросить у пользователя новый пароль Jira, сохраните его надежно и передайте его в API Jira с помощью базовой аутентификации.

Какой лучший способ сделать это?

Обычно мы хешируем его, но это невозможно, поскольку хеширование - это однонаправления, и нам нужно передать реальный пароль Jira вместо хеша.

1 Ответ

1 голос
/ 26 июня 2019

В случае хранения строки, которую необходимо защитить в случае взлома или в качестве общей проблемы безопасности данных программного обеспечения, следует выполнить шифрование.Например, в вашем случае, когда пароль принимается пользователем, он должен быть зашифрован программным обеспечением перед сохранением.При получении пароль расшифровывается и преобразуется в хеш (или base64), который Jira принимает для подтверждения входа в систему.

Помимо простого шифрования и дешифрования, лучшим подходом будет использование солей при шифровании и нескольких шифрований в цикле, чтобы избежать попыток перебора.

Псевдокод:

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/

...