設定 apache 使用密碼和鹽來使用 sql server 驗證

設定 apache 使用密碼和鹽來使用 sql server 驗證

我有一個 Web 應用程序,我想使用 apache 身份驗證來保護它。我發現它使用sha1+salt來儲存密碼。由於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 日誌:

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

我知道不建議使用 sha1 或短鹽來儲存密碼。但無論如何:有沒有辦法讓身分驗證運作?

相關內容