Назад | Перейти на главную страницу

Шифрование MD5 pw в postgresql с использованием CREATE USER WITH PASSWORD

Итак, у меня есть база данных postgresql, а в файле pg_hba.conf я аутентифицирую пользователей через md5.

Обычно я создаю пользователей с помощью команды:

CREATE USER username WITH PASSWORD 'password';

Из postgresql интернет сайт если вы не укажете ENCRYPTED или UNENCRYPTED, тогда:

поведение по умолчанию определяется параметром конфигурации password_encryption

Если пароль указан в CREATE USER или ALTER ROLE без записи ENCRYPTED или UNENCRYPTED, этот параметр определяет, следует ли зашифровать пароль. По умолчанию включено (зашифровать пароль).

Поскольку pg_hdba.conf настроен на аутентификацию с использованием md5, я вполне уверен, что используемая мной команда автоматически шифрует MD5 вводимые мной пароли. Howerver, сайт postgres также говорит:

Если представленная строка пароля уже имеет формат, зашифрованный MD5, то она сохраняется в зашифрованном виде как есть, независимо от того, указано ли зашифрованное или незашифрованное (поскольку система не может расшифровать указанную зашифрованную строку пароля).

Так есть ли польза от использования хеша MD5 в команде CREATE USER? Кроме того, как команда различает строку пароля и хэш MD5? Вы должны опускать одинарные кавычки вокруг «пароля» при использовании хеша MD5?

Так есть ли польза от использования хеша MD5 в команде CREATE USER?

Единственное преимущество в предоставлении предварительно хешированных входных данных для CREATE USER ... WITH PASSWORD это если log_statement = 'all' включен, нет риска попадания открытого текста в журналы. Однако, поскольку знания хеша достаточно для аутентификации в качестве пользователя, это вам ни к чему.

В общем, вы должны просто использовать CREATE USER ... WITH ENCRYPTED PASSWORD и покончить с этим.

Протоколу PostgreSQL не хватает поддержки сильных функций дайджеста и надлежащего обмена HMAC, поэтому в любом случае разумно использовать SSL для чего-либо, кроме доверенной локальной сети.