パスワードとソルトを使用してSQL Server認証を使用するようにApacheを構成する

パスワードとソルトを使用してSQL Server認証を使用するようにApacheを構成する

Apache 認証を使用して保護したい Web アプリケーションがあります。パスワードの保存に sha1+salt を使用していることがわかりました。 はauth_mysql_module非推奨なので、 を使用するようにしていますauthn_dbd_module。現在、debian wheezy を実行しています。Web アプリケーションがパスワード ハッシュを作成する方法は次のとおりです。

<?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 ログ:

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

パスワードの保存に sha1 や短いソルトを使用することは推奨されないことは承知しています。しかし、とにかく、認証を機能させる方法はあるのでしょうか?

関連情報