情報系学部生日記

備忘録や勉強したことのまとめ

htpasswdでパスワードの設定を行う際に8文字までしか認識してくれない

設定したパスワードよりも短い文字列で認証が通る

 SquidでプロキシのBasic認証のパスワード設定をする際に、設定したパスワードより短い文字列でも認証が通ってしまう現象に見舞われた。自分で構築した環境ではないので、仮想マシンで再現環境を構築して色々試してみた。すると9文字以降は認証時に入力の有無に関わらず、認証が通ってしまうことに気がついた。

htpasswd -cb ./.htpasswd hoge password12345

上記のようにパスワードを設定した場合には、「password」以降の「12345」は認証時に入力してもしなくても認証が通ってしまう。

ドキュメントを読む

 そこでHtpasswdのドキュメント(http://httpd.apache.org/docs/2.2/programs/htpasswd.html)を読んでみると、dオプションのところに以下のような文章が書いてあった。

This is not supported by the httpd server on Windows and Netware and TPF. This algorithm limits the password length to 8 characters.

そもそも最大8文字までしか対応していなかった。どうやらcrypt関数というものを使う際に、8文字までしか対応していないらしい。警告くらい出してくれると嬉しいな…