18:30htaccesshtpasswdTweetPocketBasic認証とは?今更ながらBasic認証についてまとめておきます。教える時に間違った情報を教えないように頭の整理もかねて。Basic認証とは?以下Wikipedia引用。Authentication)とは、HTTPで定義される認証方式の一つ。基本認証と呼ばれることも。つなぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。公開前のWebサイトを閲覧できないようにBasic認証をかけることがよくあります。特定のファイルやディレクトリに対してもBasic認証をかけることもあったりとするので、忘れないようにメモしておきます。.htpasswdファイルの作成Basic認証は、IDとパスワードを使用して認証するのですが、サーバー側にそのIDとパスワードが設定された特殊なファイルを配置する必要があります。それが「.htpasswd」ファイルになります。Basic認証を設定するディレクトリに.htaccessと共に配置します。作り方は簡単で、htpasswdコマンドで実行すれば作成できます。foopasshtpasswdコマンドオプション(Apacheのバージョンで使用できるオプションが異なる?)オプション解説-bパスワードを、対話式入力ではなくて、コマンドライン引数として指定できるようにします。-c新しいパスワードファイルを作成します。同名のパスワードファイルがすでに存在する場合は、既存の内容が削除されます。-dパスワードをファイルに書き込む際、CRYPTでハッシュします。-mパスワードをファイルに書き込む際、MD5でハッシュします。-nどのような結果になるかのみを標準出力して終了します。パスワードファイルを変更しません。-pパスワードをファイルに書き込む際、ハッシュしないで、プレーンなテキストのまま書き込みます。-sパスワードをファイルに書き込む際、SHAでハッシュします。できたがった.htpasswdファイルの中身を見てみます。.htpasswdファイルの中身Apachefoo:wvj530Hk1WcUU1foo:wvj530Hk1WcUUID:暗号化されたパスワードの形式で保存されているのが確認できます。できあがったこのファイルをBasic認証かけたいディレクトリに保存します。(最初からそのディレクトリでコマンドを実行するといいですね)htpasswdコマンドが使用できないケースコマンドが使用できる環境なら良いのですが、レンタルサーバーなどでコマンドが実行できない環境の場合があります。その場合は、ローカル上で作成したものをFTPでアップロードすればOKです。IDと平文のパスワードを入力して実行すれば、パスワードを暗号化してくれるサイトがあるのでそちらを利用してみてはどうでしょう?.htaccessのBasic認証設定.htpasswdファイルを配置したディレクトリの.htaccessファイルに以下のように記述します。valid-user1〜3行目は、.htaccessファイルと.htpasswdファイルを外部からアクセスできないようにしています。書いてもいいのですが、わかりやすさ優先で。4行目以下のディレクティブ設定は以下の通り。特定のディレクトリにBasic認証をかける場合は、その対象ディレクトリに.htaccessと.htpasswdファイルを配置すればよいのですが特定のファイルの場合は、.htaccessにそのファイルを指定しなければいけません。以下、foo.phpというファイルにBasic認証をかける場合。valid-user</Files>これはファイルを1つ指定した場合で、ファイルを複数指定したい場合は、以下のように書き換えます。valid-user</Files>できた!\(^o^)/.htpasswdファイルを生成するプログラムを今度自分用に作成してみようかな。「株式会社まなびと」の代表取締役はじめました。宮崎県で活動するフロントエンドエンジニア。フロントエンド業の傍らWordPressのプラグイン開発や公式テーマレビュー、Webマーケティングやプログラミング教室の講師などのいろいろなお仕事をしてます。JSerでPHPer。