WebProtectの設置事例 最終更新日 2003/11/14(Fri)



ウィルスチェック無料、ドメイン取得維持無料 レンタルサーバー
 

 

Web Protectとは…

※この設置方法は「WebProtect Ver3.01」用に記述されています。

設置サンプル
  動作内容を確認したい方は自由にお試しください。
  ●認証画面のサンプルはこちらです。>>>認証IDとパスワードは両方とも「guest」です。
  ●管理画面のサンプルはこちらです。<<<管理画面のサンプルは操作できません
  ●登録フォームのサンプルはこちらです。>>>実際に登録・削除が出来ます。

スクリプトの入手方法
オリジナル版は、「KENT WEB」の自作CGIのプログラムコーナーからDownLoadして下さい。
以下のリンクからニフティ用に設定している「ニフティ版」がダウンロードできます。
WebProtect(nifty版)DownLoad
  DownLoadした圧縮ファイルの中には、以下の11個のファイルが入ってます。

protect.cgi …本体スクリプト
admin.cgi …CGI管理プログラム
init.cgi …CGI設定ファイル
cook3.cgi …CGIファイル(掲示板等)をアクセス制限する場合に必要なモジュール
jcode.pl …日本語用ライブラリ
htpasswd.txt …パスワードファイル。転送後に .htpasswd にリネームします。
axslog.txt …認証ログファイル。転送後に .axslog にリネームします。
admlog.txt …管理ログファイル。転送後に .admlog にリネームします。
member.txt …会員データファイル。転送後に .member にリネームします。
index.html …ID発行フォーム。(ID発行をユーザに行わせたくない場合は不要)
secret.html …隠しトップページのサンプル

@nifty対応のディレクトリ構造
   @niftyには、cgi-binにおけるファイルに制限があります。(共通事項参照
   しかし、Web Protectでは、HTMLファイルや画像ファイルを直接入出力しているので、
   Web Protectからアクセスするファイルならば、cgi-bin以下に配置しても大丈夫です。
   むしろセキュリティを考えた場合、隠したいHTMLファイルや画像ファイルをcgi-bin以下に
   配置すれば、FTPかWeb Protectでアクセスする以外にファイルを参照する事が出来なくなる
   ので、強固なセキュリティになります。

@niftyの「Web Protect」各ファイルの設置事例


   Root/ ←あなたのルートパス
   |
   +--cgi-bin/ ←http://hpcgi▲.nifty.com/■■■■
 
   |       |
   |       +--protect/(cgi本体を設置する場所)
   |       |  | protect.cgi パーミッション[755]
   |       |  | admin.cgi  パーミッション[755]
   |       |  | init.cgi  パーミッション[644]
   |       |  | jcde.pl   パーミッション[644]
   |       |  |
   |       |  +--lock/     パーミッション[777] (ロックファイル用ディレクトリ)
   |       |
   |       +--private-room/(隠しファイルを置くところ)
   |          .htpasswd   パーミッション[666]
   |          .axslog     パーミッション[666]
   |          .admlog     パーミッション[666]
   |          .member     パーミッション[666]
   |          secret.html  …隠しページのトップメニュー
   |          file1.html  …隠しページの第1ページ
   |          file2.html  …隠しページの第2ページ
   |          file3.html  …隠しページの第3ページ
   |          *.gif      …各ページで使用するgif画像ファイル等(画像プロテクトの場合)
   |          *.jpg      …各ページで使用するjpg画像ファイル等(画像プロテクトの場合)
   |        @niftyでは、ここに配置したHTMLファイルや画像ファイルはURL指定で直接表示出来ません。
   |
   +--homepage/ ←http://homepage▲.nifty.com/■■■■■■
          |
          +--protect/(新規登録フォームを設置する場所)
             index.html パーミッション[644]


 ※青いディレクトリは新しく作成したモノ(ディレクトリ名は任意)…ディレクトリのパーミッションは[777]にして下さい

@niftyでは、/cgi-binにHTMLファイルや画像ファイルを置いても表示されません。
  ブラウザから、
http://hpcgi.nifty.com/■■■■■■/private-room/secret.html、と叩いても
  「
ホームページ開設者が閲覧することを許可していません」というエラーが出ます。
  HTMLファイルや画像ファイルを表示するには、/homepageディレクトリ以下に配置しなけれ
  ば表示されないので、この制限を逆に利用して/cgi-binの下に隠しファイルのディレクトリを
  作成すれば、
Web Protectでしかアクセスできない領域が出来あがります。

※この設置説明書では、ディレクトリ名やファイル名を指定していますが、自分で設置する場合には、
  セキュリティ保持の為に、この説明とは異なる任意のディレクトリ名、ファイル名を使用して下さい。


スクリプトの変更箇所
  エディタ等でinit.cgiを開きます。  
  青字の設定項目は、特に変更する必要はありません。
  赤字の設定項目をあなたの環境に合わせて変更します。

#┌─────────────────────────────────
#│ Web Protect v3.01 (2003/10/01)
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
$ver = 'Web Protect v3.01';
       :
    (中間省略)
       :
#============#
# 設定項目  #
#============#

# 隠しディレクトリ
# → サーバパスで指定( / から始まるパス )
$prvdir = "
/cgi-bin/private-room";
※Web Protect専用の隠しディレクトリのパスを指定します。

# 隠しファイル(トップ)
# → ファイル名のみを記述
$secret[0] = "secret.html";
※認証ページ通過後に表示する隠しメニューのファイル名を指定します。

# 以下は隠しファイル(次ページ以降分)
# → [1] [2] [3] ... と順に続ける
# → CGIの場合のみ http://から記述すること
$secret[1] = "file1.html"; # 隠しファイル1
$secret[2] = "file2.html"; # 隠しファイル2
$secret[3] = "file3.html"; # 隠しファイル3
※隠しメニューにリンクする隠しページのファイル名を指定します。

# ID/PASS記録ファイル
# → ファイル名のみを記述
$pwdfile = '.htpasswd';
※登録ユーザーパスワードの保存ファイル名です。(変更不用)

# アクセス履歴ファイル
# → ファイル名のみを記述
$logfile = '.axslog';
$admfile = '.admlog';
アクセス記録と管理ログのファイル名です。(変更不用)

# 会員ファイル
# → ファイル名のみを記述
$memfile = '.member';
メンバー情報記録用のファイル名です。(変更不用)

# タイトル名
$title = quot;MEMBER's ROOM";
※認証画面(IDとパスワードの入力画面)のタイトル名を指定します。

# 管理用パスワード(複雑な方がよい)
$pass = '0123';
管理者用パスワードを指定します。

# 本体プログラムURL
$script = './protect.cgi';

# 管理プログラムURL
$admin = './admin.cgi';

# ロックファイル形式
# → 0=no 1=symlink関数 2=mkdir関数
$lockkey = 0;
※初期値は0(ロックしない)なので、このままでもOKですが、同時アクセスによるログの破損
を防止するために指定しておく方が無難です。
@niftyではsymlink関数が使えるので、1(symlink関数)を指定します。

# ロックファイル
$lockfile = './lock/protect.lock';
ロックファイル用のディレクトリとファイル名を指定します。
この設置事例通りにする場合は変更不用です。

# アクセスログ最大保持数
$max = 300;
アクセス記録の最大保持数を指定します。

# 戻り先URL
$backUrl = 'http://homepage.nifty.com/■■■■/index.html';
戻り先のURL(通常はTOPページ)を指定します。

# 1ページ当り会員表示件数
$pageView = 50;
管理画面の1ページで表示するユーザー数を指定します。

# 管理アドレス
$master = 'xxx@xxx.xxx';
管理者のメールアドレスを指定します。

# sendmailパス
$sendmail = '/usr/lib/sendmail';
ニフティではSendmailが使えないのでこの設定は使用しません。

# ユーザ登録アクセス制限(半角スペースで区切る)
# → 拒否するホスト名又はIPアドレスを記述(アスタリスク可)
# → 記述例 $deny = '*.anonymizer.com 211.154.120.*';
$deny = '192.168.0.* 211.154.120.*';
アクセスを拒否するホストのIPアドレスを記述します。
ニフティでは全てIPアドレスで指定します。

# bodyタグ
$body = '<body bgcolor="#FFFFFF" text="#000000">';
※管理者専用画面の背景、文字色、リンク色を指定します。
壁紙を使う場合は、以下の書式で任意に設定してください。

  <body background="壁紙ファイル名 " bgcolor=" 背景色 " text=" 文字色 " link=" リンク色 " vlink=" リンク訪問後 ">
#============#
# 設定完了   #
#============#

隠しページ(htmlファイル)の作成
  Web Protect認証システムでアクセス制限したいページをHTMLエディタ等で作成します。
  認証ページ(protect.cgi)を通過したときに表示されるトップメニュー(secret.html)を作成します。
  次に、トップメニューからリンクする隠しページ(file1.html、file2.html、file3.html…)を作成します。

@niftyの一般的なホームページの階層例とWeb Protect認証ページへのリンクの張り方

 表トップページ(http://homepage?.nifty.com/****/index.html
   |
   +--WhatNew
   |
   +--Main
   |
   +--Other
   |
   +--会員専用入口 ← 表のトップメニュー等に「Web Protect」にアクセスする入口を作る。
       |
       +--認証ページhttp://hpcgi?.nifty.com/****/protect/protect.cgi
           | ※ここでユーザーIDとパスワードを要求される。
           |
           +--会員専用トップページ/cgi-bin/private-room/secret.html)
                 | ※認証ページ通過後、自動的に表示される。
                 |  ページ1のリンク指定 <a href="http://hpcgi?.nifty.com/****/protect/protect.cgi?page=1"> 
                 |  ページ2のリンク指定 <a href="http://hpcgi?.nifty.com/****/protect/protect.cgi?page=2"> 
                 |  ページ3のリンク指定 <a href="http://hpcgi?.nifty.com/****/protect/protect.cgi?page=3"> 
                 |      :
                 |  以下、4,5,6、と増設可
                 |
                 +---隠しページ1file1.html
                 |   トップに戻る <a href="http://hpcgi?.nifty.com/****/protect/protect.cgi?page=top">
                 |
                 +---隠しページ2file2.html
                 |   トップに戻る ページ1と同じ指定
                 |
                 +---隠しページ3file3.html
                     トップに戻る ページ1と同じ指定

                
 ※プロテクト画像表示の指定方法(ファイルプロテクトの場合)
 
                  メンバー以外に見せたくない画像ファイルがある場合は、画像ファイルを隠しディレクトリに入れて、
                   下記の例の様にタグを記述して下さい。

                   
例1:GIF画像のcgi-bin/protect/private-room/title.gifを表示する場合
                    <img src="http://hpcgi?.nifty.com/****/protect/protect.cgi?gif=title">

                   例2:JPEG画像のcgi-bin/protect/private-room/phot.jpgを表示する場合
                   <img src="http://hpcgi?.nifty.com/****/protect/protect.cgi?jpeg=phot">

                   
例3:PDF画像のcgi-bin/protect/private-room/pic01.pdfを表示する場合
                   <img src="http://hpcgi?.nifty.com/****/protect/protect.cgi?pdf=pic01">

                   
例4:Excelデータのcgi-bin/protect/private-room/data.xlsを表示する場合
                   <img src="http://hpcgi?.nifty.com/****/protect/protect.cgi?excel=data">

                 ※homepage/ディレクトリ以下にある画像(プロテクト無し)を表示する場合は、通常の指定方法でOKです。


ファイルのアップロード
  スクリプトの変更及び隠しページの作成が完了したら、「各ファイルの設置事例」を参考にして
  FTPで各ディレクトリにファイルをアップロードしてパーミッションを変更します。
  設置が完了したら、ブラウザから以下の様にタイプして、管理画面を呼び出して1つ目のIDと
  パスワードを登録して下さい。
  管理者画面の呼び出し>http://hpcgi.nifty.com/■■■■/protect/aadmin.cgi

  • 前回ログイン: 2003/10/05-20:01 【198.164.***.***】Mozilla/4.x (compatible; MSIE 5.x; Windows 9x)
  • 処理を選択して送信ボタンを押してください。
処理 :

tanaka [名前] 田中マキコ [備考] 実在の人物とは一切関係ありません。

guest [名前] ゲストユーザー [備考] ゲスト専用のIDとパスワードです。


  ※無事にWeb Protectの管理画面が表示されて、IDの登録が出来たら設置完了です。


CGIのアクセス制限
   Web Protectでは、cgiプログラムの認証チェックも行えます。
   cgiプログラムの認証チェックを行うには、補助モジュール「cook3.cgi」を使用します。
   以下に、AskaBBS(aska.cgi)という掲示板のWeb Protect内の設置例を示します。
   AskaBBSは、KENT WEBで配布されている掲示板の中では最も設置が簡単な掲示板です。
   当ホームページのWeb Protect設置サンプルの中にある掲示板も「AskaBBS」です。

   ※CGIファイルに対するアクセス制御の実際の動きについてはWeb Protectサンプルの掲示板
     「内緒のBBS」をご覧下さい。

●Step1(必要なファイルのDownLoad)
  AskaBBSKENT WEBの「掲示板」コーナーからDownLoadします。
  DownLoadしたアーカイブファイルを解凍すると以下の3つのファイルが得られれます。
  aska.cgi … AskaBBS本体スクリプト
  aska.log … ログ記録ファイル
  jcode.pl … 日本語ライブラリ


●Step2(cook.cgiの修正)
 
 エディタで「cook.cgi」を開いて以下の箇所を修正して保存します。

# 隠しディレクトリ
# → protect.cgiの設定と合わせること
$prvdir = '/cgi-bin/private-Room'; 

※上記の隠しディレクトリは、この設置説明書のディレクトリ構造での指定例です。
実際には、自分の隠しディレクトリ名を指定して下さい。

●Step3(aska.cgiスクリプトの修正)
  エディタで「aska.cgi」を開いて「require './jcode.pl';」のすぐ下に以下の2行を追加
  して保存します。

#!/usr/local/bin/perl

## Aska BBS v1.41
## (C)1997-2000 Kent Web (00/02/21)
## Mail: webmaster@kent-web.com)
## Home: http://www.kent-web.com/

$ver = 'Aska v1.41'; # バージョン情報
      :
      :(中間コメント省略)
      :
#============#
# 設定 #
#============#

# 文字コード変換ライブラリ取り込み
require './jcode.pl';
require './cook3.cgi';  #←cook3.cgiの読込
&cookCheck;
       #クッキー認証のチェック

# タイトル名
$title = "AskaBBS";
      :


●Step4
(ファイルのアップロード)
  cook3.cgiaska.cgiの修正が完了したら、下記の通り「protect.cgi」を設置している
  ディレクトリに転送し、パーミッションを変更します。
  CGIのアクセス制御を行う場合は、必ず「protect.cgi」のあるディレクトリにアクセス制御
  したいCGIを配置しなければいけません。
  これは、クッキーによる認証を行っている仕様の問題ですので変更は出来ません。
  ここは発想を転換して、「アクセス制御したいCGIのディレクトリにprotect.cgiを配置する
  必要があると考えて下さい。

 
Root/ ←あなたのルートパス
  |
  +--cgi-bin/http://hpcgi▲.nifty.com/■■■■
  |
  +--protect/   (cgi本体を設置する場所)
  |   protect.cgi [755]
  |   init.cgi   [644]
  |   jcode.pl   [644]
  |   cook3.cgi    [644]
  |   aska.cgi    [755]
  |   aska.log    [666]
  |
  +--private-room/   (隠しファイルを置くところ)
      .htpasswd [666]
      .axslog  [666]
      .admlog  [666]
      .member  [666]
      secret.html  …隠しページのトップメニュー
      file1.html  …隠しページの第1ページ
      file2.html  …隠しページの第2ページ
                      :
           ※上記の青いファイルAskabbsの設置に必要なファイルです。

  さて、これでAskaBBSの設置は終わりました。
  次にWeb ProtectからCGIを呼び出すために、CGI呼び出しリンクを設定します。
  (1)init.cgi内にcgiの呼び出しアドレスを加える
  (2)会員専用トップページに、cgiを呼び出すリンクを加える。
  という作業が必要になります。

●Step5(init.cgiの修正例)

# 以下は隠しファイル(次ページ以降分)
# --> [1] [2] [3] ... と順に続ける
# --> CGIの場合のみ http://から記述すること
$secret[1] = "
file1.html";    # 隠しファイル1        ← 隠しページの1ページ目
$secret[2] = "
file2.html";    # 隠しファイル2        ← 隠しページの2ページ目
$secret[3] = "
file3.html";    # 隠しファイル3        ← 隠しページの3ページ目
$secret[4] = "
http://hpcgi▲.nifty.com/■■■■/protect/aska.cgi";  ← cgiのURL
                 

※上記の通り、アクセス制御したいcgiのURLをhttp://からフルで指定します。


●Step6(会員専用トップページの修正)
  会員専用トップページ(設置例ではsecret.html)に、cgiを呼び出すリンクを追加します。
  リンクの指定は、以下の通りです(htmlファイルのリンク指定と同じです)
  <a href="http://hpcgi▲.nifty.com/■■■■/protect/protect.cgi?page=4">BBS</a>

  ※上記の?page=4の部分は、protect.cgiの設定(cgiのURLを指定した$target[n]の配列番号)と必ず
    合わせる様にして下さい。

    以上でWeb Protectでのcgiの設定は全て完了です。
    ID&パスワードで認証を受けて、会員専用トップページのリンクからAskaBBSを呼び出して下さい。
   (ID&パスワード認証を通らずにcgiを呼び出すと「No Cookie」エラーになります。)


登録フォーム(index.html)の設置
   Web Protectは、管理者画面でユーザーIDとパスワードの登録・削除が行えますが、
   同梱されている登録フォーム(index.html)をつかえば、ユーザーIDとパスワードの新規登録を
   ユーザー側に開放することが出来ます。

(1)index.htmlをregist.htmlに名前を変えて/homepageディレクトリの下に配置する。
   ユーザー登録用のファイルはindex.htmlという名前なので、
   /homepageに置くとTOPページと名前が重複する危険があります。
   regist.html等の適当な名前に変更して使用して下さい。

(2)regist.htmlの<form>タグのadmin.cgi呼び出しURLをhttp://からフルで指定する。
  例えば "http://hpcgi.nifty.com/■■■■/protect/admin.cgi"に設置した場合は、
index.htmlの28行目と63行目付近の<form>タグを以下の様に修正します。
■修正前
<form action="./admin.cgi" method="POST">
  ↓
■修正後
<form action="http://hpcgi.nifty.com/■■■■/protect/admin.cgi" method="POST">

(3)FTPでアップロード
   修正が完了したら、regist.htmlをFTPでhomepage/フォルダに転送します。
   このファイルの呼び出しURLは以下の様になります。
   "http://homepage.nifty.com/■■■■/regist.html"



CGI設置でお困りの方へ、ニフティの自作CGIの代行設置もおまかせ下さい!