Как я могу хешировать пароли в postgresql?

Я должен хешировать некоторые пароли с солью на postgresql, и я не смог найти любую соответствующую документацию о том, как сделать это.

Таким образом, как я могу хешировать пароли (с некоторыми солями) в postgresql?

47
задан rook 29 October 2010 в 04:14
поделиться

2 ответа

Приложение должно хешировать свои пароли с помощью функции получения ключа как bcrypt или pbkdf2. Дополнительная информация о безопасном хранении паролей .

... но иногда вам все же нужны криптографические функции в базе данных.

Вы можете использовать pgcrypto , чтобы получить доступ к sha256, который является членом семейства sha2. Имейте в виду, что sha0, sha1 md4 и md5 очень повреждены и не должны никогда использоваться для хэшей паролей.

Ниже приведен хороший метод хеширования паролей:

digest("salt"||"password"||primary_key, "sha256")

Соль должна быть большим случайно сгенерированным значением. Эта соль должна быть защищена, потому что хеши нельзя сломать, пока соль не будет восстановлена. Если вы храните соль в базе данных, ее можно получить вместе с хешем пароля с помощью sql-инъекции. Объединение первичного ключа используется для предотвращения того, чтобы два человека имели одинаковый хэш пароля, даже если у них один и тот же пароль. Конечно, эту систему можно улучшить, но она намного лучше, чем большинство систем, которые я видел.

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

16
ответ дан 26 November 2019 в 19:33
поделиться

Примеры и документация на: http://www.postgresql.org/docs/8.3/static/pgcrypto.html

UPDATE ... SET pswhash = crypt('new password', gen_salt('md5'));

SELECT pswhash = crypt('entered password', pswhash) FROM ... ;
8
ответ дан 26 November 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: