configura o apache para usar a autenticação do sql server usando senha e salt

1

Eu tenho um aplicativo da web que desejo proteger usando a autenticação do apache. Eu descobri que ele usa sha1 + sal para armazenar senhas. Como auth_mysql_module está obsoleto, tento usar authn_dbd_module . Atualmente estou executando o debian wheezy. Veja como o aplicativo da web cria hashes de senha:

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

tente com o php:

sha1('password'.'salt')
c88e9c67041a74e0357befdff93f87dde0904214

Eu posso reproduzir o hash usando o mysql:

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

tente usar o mysql:

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

Meu 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>

A linha AuthDBDUserPWQuery obviamente não faz o truque porque cria um novo hash de (hash e salt armazenados) e compara-a com a senha digitada. E Apache-log:

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

Eu sei que não é recomendado usar o sha1 nem o short sal para armazenar senhas. Mas de qualquer forma: existe uma maneira de fazer a autenticação funcionar?

    
por cyoborg 22.08.2015 / 19:06

0 respostas