htpasswdとは
.htpasswdは、Apache HTTP Serverでユーザー認証(Basic認証)に使用するパスワードファイルです。 ユーザー名とハッシュ化されたパスワードを「username:hash」形式で1行ずつ格納します。
Basic認証の仕組み
Basic認証はHTTPプロトコルで定義された認証方式です。Webサーバーが特定のディレクトリへのアクセスを制限し、 ブラウザがダイアログでユーザー名とパスワードの入力を求めます。.htaccessファイルでAuthType Basicを設定し、AuthUserFileで.htpasswdファイルのパスを指定して使用します。
アルゴリズムの比較
| アルゴリズム | 形式 | セキュリティ | 互換性 |
|---|---|---|---|
| MD5 (APR1) | $apr1$salt$hash | 中(1000回イテレーション) | Apache全バージョン |
| SHA-1 | {SHA}base64 | 低(ソルトなし) | Apache全バージョン |
| bcrypt | $2y$cost$hash | 高(コスト調整可能) | Apache 2.4以降 |
セキュリティの観点からはbcryptが推奨されます。 Apache 2.4未満の環境ではAPR1を使用してください。
Apache 2.4での設定方法
.htaccessファイルに以下を追記します:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-userAuthUserFileにはサーバー上の.htpasswdファイルの絶対パスを指定してください。
セキュリティ注意事項
.htpasswdファイルはWebからアクセスできない場所に配置するか、アクセス制限を設定してください- Basic認証の資格情報はBase64エンコードで送信されるため、HTTPS環境での使用を推奨します
- SHA-1はソルトを使用しないため、同じパスワードは常に同じハッシュになります。可能であればbcryptを使用してください