0

Apache mod_auth_basicmod_authn_dbdを使用すると、データベースでユーザーのパスワードを検索してユーザーを認証できます。パスワードが平文で保持されている場合は機能することがわかりますが、ランダムな文字列をソルトとして使用し (データベースにも保存されます)、連結のハッシュを保存するとどうなりますか?

mod_authn_dbd では、ユーザーが認証されているかどうかを判断するために、そのパスワードを選択するクエリを指定する必要があります。したがって、そのクエリを使用して、ユーザーが提供したパスワードをソルトと連結し、保存されているハッシュと比較することはできません。

AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"

これを機能させる方法はありますか?

4

1 に答える 1

0

Basic Authのパスワード形式を見ると、ハッシュがapr_md5_encode関数を使用して行われている場合、これを機能させることができるように見えました。

これに関連し、Java 実装にリンクする別の質問が見つかりました。この実装を少し変更して使用し、Web サイトの通常のユーザー作成フロー内でデータベース ハッシュを計算しました。この後、次のクエリで mod_authn_dbd を使用できます。

AuthDBDUserRealmQuery "SELECT CONCAT('$apr1$',password_salt,'$',password_hash) FROM users WHERE user = %s AND realm = %s"
于 2012-06-06T14:20:00.403 に答える