SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
てるてる動画

【apache】ベーシック認証で8文字以上の長いパスワードを設定するときの注意

問題

ベーシック認証で長いパスワードを設定したつもりなんだけど、8文字目以降が無視されているような気がする。大丈夫?

答え

ベーシック認証の設定には htpasswdコマンドを利用する。

linuxのhtpasswdに関しては、知らないとびっくりな仕様が。
http://httpd.apache.org/docs/2.2/programs/htpasswd.html

When using the crypt() algorithm, note that only the first 8 characters of the password are used to form the password. If the supplied password is longer, the extra characters will be silently discarded.

(linuxの場合、OSの)crypt()アルゴリズムを使うと、先頭の8文字しか使われないよ。長いパスワードを渡しても、はみ出た分は無視するよ。

警告ぐらい出した方が親切&安全なのでは…。マニュアルの注意書きは、次期バージョンの2.3、2.4でもそのままとなっているようです。

windowsの場合は、MD5アルゴリズムがデフォルトで使われて、こんな結果が得られる。この場合は8文字以上のパスワードを使用できる。

C:\>htpasswd.exe -nb test testtesttesttest
Automatically using MD5 format.
test:$apr1$xq6WoO/J$oQAc7q/IJ/EgqgKAVSUFL.

linuxの場合、デフォルトでOSのcrypt()が使われて、こんな結果が得られる。

# htpasswd -nb test testtesttest
test:KF11YCgMWJOxk ←8文字以上の長いパスワードに対応できない形式

linuxで8文字以上の長いパスワードを設定したいときは、mオプションでMD5アルゴリズムでハッシュを作ってもらうこと。

# htpasswd -nbm test testtesttesttest
test:$apr1$Oth9B/..$FykTbpWnvDkuGAR9Fhi140

さりげなく m オプションをつけると、「やるな、おぬし」と思ってもらえることもあるかもしれません。

関連するメモ

コメント