Perl/ActivePerl For UNIX/Linux/Windows
 
TryThe Homepage
初めてのCGI
CGI 研究室
ダイナミックCGI
ダウンロード
サービス
サーバ構築(Windows)
データベースアクセス
有料サービス
FAQ
お問い合わせ
このページを印刷
アクセス制限
ここまででサーバ設置に関するソフトウェアのセットアップ、便利なツールのセットアップも完了しました。 本章では、作成したサーバのホームページにアクセス制限を付ける方法や、アクセスを管理する方法を学習します。
ご自分だけのサーバだから出来るアクセス制限をお楽しみください。
  ユーザID、パスワードによるアクセス制限
各ディレクトリごとに.htaccessというファイル名の無い拡張子だけの特殊なファイルを置く事で 簡単にディレクトリへのアクセスを制限する事ができます。
  1. 「.htaccess」の作成
    エディターを開き次の文を記入します。既に.htaccessを設置している場合は追加してください。
    AddHandler cgi-script .htaccess
    AddHandler cgi-script .htpasswd
    AuthUserFile /usr/.htpasswd
    AuthName Please Your ID and Password
    AuthType Basic
    require valid-user
    AuthUserFileには、パスワードを格納するファイルのパスを絶対パスで指定します。
    この例ではC:\usr\.htpasswdを使用します。
    AuthNameは、パスワードをダイアログのメッセージです。
    後は変更せずにそのままコピーしてください。
    このファイルをアクセス制限するディレクトリに「.htaccess」という特殊なファイル名を付けて保存します。
    これだけで、このディレクトリにアクセスしようとするとパスワードダイアログが表示されます。
  2. パスワードファイル(.htpasswd)の作成
    Apacheではパスワードファイルを暗号化して保存しますので、テキストファイルで自由に作成する事はできません。
    が、親切な事に専用のパスワード発行プログラムもインストールされています。
    パスワード発行プログラムhtpasswd.exeは、Apacheをインストールしたディレクトリのbinディレクトリに有ります。
    MS-DOSプロンプトを起動して、次のように入力します。
    htpasswd -c c:\usr\.htpasswd terra
    -cは、最初に一度だけ指定し、ファイルを作成します。一度作成すればパスワード追加時には指定しません。
    c:\usr\.htpasswdは、作成するパスワードファイルの絶対パスです。 .htaccessで、/usr/.htpasswdと指定していますので、 同じパスを指定して作成しています。
    terraは、ファイル作成と同時に作成するパスワードですので通常は管理者のIDにしておきます。 後は、作成するパスワードと確認の為もう一度同じパスワードを指定します。
    同様に「-c」を削除し、他のIDを指定していくつでも追加する事ができます。
    作成された.htpasswdはテキストファイルですのでエディタで開き削除することは出来ますが、 パスワードは暗号化されていますので変更する事はできません。

    これでパスワードファイルも作成されましたので、 .htaccessを設置したディレクトリにアクセスして表示されたパスワードダイアログにIDとパスワードを入力すればアクセスできます。
    ※暗号化されたパスワードはUNIX系、Windows系、Mac系サーバで異なるので共有は出来ません。
  3. CGIで自動登録
    コマンドラインからのパスワードの登録が出来ましたので、一応使用することは可能となりましたが、 毎回コマンドラインから追加するのも厄介です。そこでCGIを使って自動的に登録するスクリプトを紹介しましょう。
    createpassword.lzhをダウンロードして解凍します。
    CGIが実行できればどこでも結構ですが、訪問者がアクセスできないディレクトリに置きます。
    createpassword.cgiは、環境により変更する必要がありますのでエディターで開きます。
    #!/usr/local/bin/perl
    #↑ここにあなたの加入しているプロバイダのperl言語のパスを指定します
    # ほとんどの場合、「#!/usr/local/bin/perl」だと思われます
    #↓jcode変換ライブラリ
    require '/usr/lib/jcode.pl';
    require '/usr/lib/perl-lib.pl';
    #====================================================
    # CreatePassword Ver2001.11
    #====================================================

    #Apacheをインストールしたフォルダ名を絶対パスで
    #最後に「\」を置かないこと
    $apache_path = 'c:\apache';
    #------------------------------------------------------------
    #.htpasswdデータファイルの絶対パス
    $data_path = 'c:\usr\.htpasswd';
    #------------------------------------------------------------
    #管理者パスワード、公開する場合はヌル''にする
    $password = 'abcd1234';
    #------------------------------------------------------------
    #登録後に戻るページのアドレス
    $returnpage = '';
    #====================================================
    # 設定はここまで
    #====================================================
    CGIの呼び出しは直接アドレスバーから行います。
    管理者用パスワードを設定している場合はスクリプト名の後ろに?pw=○○○○のように設定したパスワードを付けて呼び出してください。

    作成するユーザIDとパスワード、確認パスワードを記入して[送信する]ボタンを押します。
    既に登録されているIDは使用できませんのでエラーを返します。
    もちろん、すべて半角英数字で記号を使用することもできません。

    設定した内容に問題が無ければ確認画面を表示しますので[送信する]ボタンを押してください。
    この瞬間に指定したIDと暗号化されたパスワードが.htpasswdに登録されています。
  さまざまなアクセス制限
上記アクセス制限以外にも、少し.htaccessの設定を変更するだけで、いろいろなアクセス制限を簡単に行えます。
  • 特定のホストからは制限しない
    サーバ本体や、LANで接続されているパソコンからは毎回パスワードを指定するのも面倒です。 そこで、指定したIPアドレスからのアクセスはパスワードを要求しない設定をしましょう。
    エディターを開き次の文を記入します。既に.htaccessを設置している場合は追加してください。
    AddHandler cgi-script .htaccess
    AddHandler cgi-script .htpasswd
    AuthUserFile /usr/.htpasswd
    AuthName Please Your ID and Password
    AuthType Basic
    require valid-user

    Satisfy any
    order deny,allow
    allow from 192.168.1.
    deny from all
    allow from 192.168.1.で許可するIPアドレスを指定しています。
    もちろん、他のインターネットのグローバルIPアドレスや、ドメイン名を指定することもできます。 また、複数行にわたり複数のIPアドレスを許可することもできます。
  • 特定のホストだけアクセス禁止
    掲示板の「荒らし」など、一度でも悪戯されると入室を禁止したくなる事があります。 それ以外の方々には今まで通りアクセスしていただき、登録したドメインや、 IPアドレスのサーバからは二度とアクセスできなくなります。
    AddHandler cgi-script .htaccess
    AddHandler cgi-script .htpasswd
    order allow,deny
    allow from all
    deny from 202.131.
    deny from .biglobe.ne.jp
    deny from .inforyoma.or.jp
    deny from 202.131.で禁止するIPアドレスを指定しています。
    もちろん、他のインターネットのグローバルIPアドレスや、ドメイン名を指定することもできます。 また、複数行にわたり複数のIPアドレスを許可することもできます。
    この場合は、パスワードファイルも必要有りません。
  • 特定のホストだけアクセス許可
    ほとんどのページは一般公開して、一部のページだけは社内専用としたい場合もあります。 このような場合は、LANで接続されているパソコンと、支店や出張所などのグローバルなIPアドレスだけを許可することもできます。
    AddHandler cgi-script .htaccess
    AddHandler cgi-script .htpasswd
    order deny,allow
    deny from all
    allow from 192.168.1.
    allow from 202.131.123.45
    allow from 202.131.123.46
    allow from 202.131.123.47
    allow from 202.131.123.48
    allow from 192.186.1.で許可するIPアドレスを指定しています。
Copyright 2004 Terra. All rights reserved. No reproduction or republication without written