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

настроить apache для использования аутентификации sql server с использованием пароля и соли

У меня есть веб-приложение, которое я хочу защитить с помощью аутентификации apache. Я обнаружил, что он использует соль sha1 + для хранения паролей. поскольку auth_mysql_module устарел, я пытаюсь использовать authn_dbd_module. В настоящее время я использую debian wheezy. Вот как веб-приложение создает хэши паролей:

<?php sha1($pw.$salt); ?>

попробуйте с php:

sha1('password'.'salt')
c88e9c67041a74e0357befdff93f87dde0904214

Я могу воспроизвести хеш с помощью mysql:

SELECT SHA1(CONCAT(@pw, @salt));

попробуйте использовать mysql:

mysql> SELECT SHA1(CONCAT('password', 'salt'));
+------------------------------------------+
| SHA1(CONCAT('password', 'salt'))         |
+------------------------------------------+
| c88e9c67041a74e0357befdff93f87dde0904214 |
+------------------------------------------+

Мой apache site.conf:

    DBDriver mysql
    DBDParams "host=localhost user=<db_user> pass=<db_pass> dbname=<db_name>"

    <Directory /var/www/htdocs/>
       Options -Indexes
       Order allow,deny
       Allow from all

       AuthName "Please enter username and password"
       Authtype Basic
       require valid-user

       AuthBasicProvider dbd
       AuthDBDUserPWQuery "SELECT SHA1(CONCAT(password, salt)) AS password FROM users WHERE username = %s"

    </Directory>

В AuthDBDUserPWQuery Очевидно, что строка не работает, потому что она создает новый хэш из (сохраненного хеша и соли) и сравнивает его с введенным паролем. И Apache-log:

[Sat Aug 22 XX:XX:XX 2015] [error] [client 92.X.X.X] user myusername: authentication failure for "/": Password Mismatch

Я знаю, что для хранения паролей не рекомендуется использовать sha1 или short salt. Но как бы то ни было: есть ли способ заставить аутентификацию работать?