я использую mod_auth_mysql
с Apache 2 и MySQL 5 для авторизации apache. Сейчас наши пароли хранятся в открытом виде в нашей базе данных. В качестве нового требования мы должны хранить их с солью, чтобы бороться с атаками радужного стола. В документации указано:
AuthMySQLSaltField <> | <string> | mysql_column_name
Contains information on the salt field to be used for crypt and aes
encryption methods. It can contain one of the following:
<>: password itself is the salt field (use with crypt() only)
<string>: "string" as the salt field
mysql_column_name: the salt is take from the mysql_column_name field in the
same row as the password
This field is required for aes encryption, optional for crypt encryption.
It is ignored for all other encryption types.
Похоже, модуль может это сделать, но я ничего не могу найти, как это сделать? Что я должен указать в столбце пароля? Что мне добавить в соль? Как использовать AES? (Большинство приложений будут PHP для создания пользователей)
Это зависит от того, какая у вас соль!
Как правило, вы можете использовать что-то, что пользователь не может изменить, например их ID, в качестве соли; в этом случае укажите столбец, содержащий идентификатор пользователя.
Если вы используете постоянную соль, заключите ее в знаки <>.
Соль должна быть случайной строкой, а не md5 / sha1 / 256. Представленные вами документы предназначены для того, чтобы соль была в отдельной колонке. Итак, вам "нужны" 3 столбца для использования аутентификации
Usersname/email = user submitted
passwordhash = hash(password, passwordsalt)
passwordsalt = random string
Вы можете легко использовать эти столбцы для проверки паролей и создания новых пользовательских записей с солью и хешем.
Никогда не храните пароли в виде простого текста.
Что касается функции hash (), взгляните на phpass библиотека. Это то, к чему обратился wordpress, когда они наконец внедрили соленые хэши в свою базу данных.