| 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、と増設可 | +---隠しページ1(file1.html) | トップに戻る <a href="http://hpcgi?.nifty.com/****/protect/protect.cgi?page=top"> | +---隠しページ2(file2.html) | トップに戻る ページ1と同じ指定 | +---隠しページ3(file3.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
※無事に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)
AskaBBSをKENT
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.cgiとaska.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の代行設置もおまかせ下さい!