差分表示


ApacheのBASIC認証で長いパスワードを使っていたが,デフォルトでは先頭の8文字までしか効いていなかった.
//parent=Apache

ApacheのBASIC認証は,非SSLだともちろんセキュリティ的に使い物にならないが,SSLならまぁ使えるので,一応長いパスワードを設定して使っていた.
しかしどうも,''途中までしか入力していなくても''なぜか認証に通ってしまうことに気づいた.

これはやばい,変だということで調べてみた.
-&link(Apache2.2マニュアル htpasswd,http://httpd.apache.org/docs/2.2/programs/htpasswd.html);

そこには衝撃の事実が記されていた.
-Windows,Netware,TPF以外のプラットフォームでは,デフォルトでcrypt()関数の暗号化が使用される
-crypt()関数の暗号化では,''パスワードの先頭8文字だけ''が使われて,それより長い文字数の場合は切り捨てられる

''ヽ(`Д´)ノ  ガーン!''

早速 -mオプションをつけて,crypt()ではなくMD5の暗号化でパスワードファイルを作り直した.
--(
/usr/local/apache2/bin/htpasswd -mc /usr/local/apache/conf/.dav davuser
--)
これで,長いパスワードを最後までちゃんと入れないと,認証に通らないようになった.めでたし.

あとMD5の他にも,-sオプションによるSHA方式もあるが,MD5に比べて生成される文字数が短いのと,マニュアルにランダムなSALTを使わないので強度が弱いと書かれているため,強度的にはMD5がベストのようだ.
,htpasswdのオプション,暗号化方式,備考
,-p,プレインテキスト,Windows,Netware,TPFでしか使えない
,-d,crypt関数,Windows,Netware,TPFでは使えない.それ以外の環境ではこれがデフォルト
,-m,MD5,Windows,Netware,TPFでのデフォルト.強度的にはベスト
,-s,SHA,ランダムなSALTを使わないので,総当たり攻撃に弱いらしい

,方式,htpasswdのオプション,備考
,プレインテキスト,-p,Windows,Netware,TPFでしか使えない
,crypt関数,-d,パスワードの先頭8文字のみ有効.Windows,Netware,TPFでは使えない.それ以外の環境ではこれがデフォルト
,SHA,-s,ランダムなSALTを使わないので,総当たり攻撃に弱いらしい
,MD5,-m,Windows,Netware,TPFでのデフォルト.強度的にはベスト


© 2023 KMIソフトウェア