配置 apache 以使用密码和盐的 sql server 身份验证

配置 apache 以使用密码和盐的 sql server 身份验证

我有一个 Web 应用程序,我想使用 apache 身份验证来保护它。我发现它使用 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 或短盐来存储密码。但无论如何:有没有办法让身份验证成功?

相关内容