Basic認証でアクセス制限をかける

概要

BASIC認証はWebサイトの閲覧に使うプロトコル「HTTP」が備える、最も基本的なユーザ認証方式です。簡単に設置できるアクセス制限である反面、盗聴や改竄が簡単であるという欠点を持ちます。

目次

.htpasswd ファイルを作成する

まずは、認証のためのパスワードファイルを作ります。 このファイルは、ウェブ上からアクセスできる場所には置くべきではありません。

コマンドから htpasswd ファイルを作成

ファイルを作るためには、Apache 付属の htpasswd を使います。

 # htpasswd オプション パスワードファイル名 ユーザー名
 htpasswd -c /var/www/passwd/.htpasswd myname

htpasswd は、パスワードを要求し、その後 確認のためにもう一度入力するように要求してきます。

 # htpasswd -c /var/www/passwd/.htpasswd myname
 New password: mypassword
 Re-type new password: mypassword
 Adding password for user myname 

PHPプログラムで htpasswd ファイルを作成

PHPからでも簡単に htpasswd ファイルを作成することができます。

<?php
  $id = "myname";
  $pass = "mypassword"
  $value = $id . ":" .crypt($pass,$pass);
  echo $value;
?>

出力結果を .htpasswd ファイルに書き出してください。

.htaccess ファイルを作成する

次にサーバがパスワードを要求するように .htaccess ファイルを作成します。

例えば、/var/www/html/secret ディレクトリを保護したい場合は、/var/www/html/secret/.htaccess にファイルを作成します。

 AuthType Basic ← 認証方法
 AuthName "Restricted Files" ← 認証に使う領域を設定
 AuthUserFile /var/www/passwd/.htpasswd ← htpasswd で作ったパスワードファイルへのパス
 Require user myname ← アクセスできるユーザを指定
 Require valid-user ← パスワードファイルにリストされている人であれば誰でも許可されます。

BASIC認証はクライアントからブラウザへ、 パスワードを暗号化せずに送ります。この方法は特に機密性の高いデータに対しては用いるべきでは ありません。

Apache HTTP サーバ バージョン 2.0 > HTTP 認証、承認、アクセス制御

投稿日:

ページのトップへ戻る