我有一个Web应用程序,我想要使用Apache身份validation保护。 我发现它使用sha1 +盐来存储密码。 由于auth_mysql_module已被弃用,我尝试使用authn_dbd_module 。 目前我正在运行debian wheezy。 这里是networking应用程序如何创build密码哈希值:
<?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行显然没有这样做,因为它会从(存储的散列和salt)中创build一个新的散列,并将其与input的密码进行比较。 和Apache的日志:
[Sat Aug 22 XX:XX:XX 2015] [error] [client 92.XXX] user myusername: authentication failure for "/": Password Mismatch
我知道既不推荐使用sha1也不使用短盐来存储密码。 但无论如何:有没有办法使authentication工作?