Home > パスワード制限 > WEB PROTECT
|
特長
- 本格的なセッション管理機能を実装し、ID/パスワードによる強固なアクセス制限を行います。
- サンプルは以下にあります(ID=guest, パスワード=guest)。
- WEB PROTECTの機能的な特長は以下のとおりです。
- 本格的なセッション管理機能(CGI::Sessionモジュール使用)を実装し、強固なアクセス制限を行うことができます。
- ID&パスワードの発行、修正、削除をウェブ上で簡単に行うことができます。さらに各IDごとに名前、E-mail、備考情報も管理します。
- sendmailの利用可能なサーバでは、ユーザによるID&パスワードの自動発行(アトランダムなパスワードを発行・セットして、ユーザへ自動でメール通知)、パスワード修正、登録削除も行うことができるため、24時間自動運用を行うことができます。
- アクセス履歴(ログ)を取得し、その閲覧をウェブ上から行うことができます。
- アクセス制限をするファイルはHTMLはもちろん、CGIや画像等のバイナリファイルにも対応しています。
- 設定により、ID&パスワードの発行形態を、「ユーザによる発行&メンテ」「発行は管理者。ユーザはメンテのみ」「発行&メンテともに管理者のみ」のいずれかを選択することができます。
- このプログラムを利用する上での利用規定です。必ず目を通しておいて下さい。プログラムをダウンロードする場合、「利用規定」に同意したものとみなします。
プログラムの入手
- 以下の書庫ファイルをダウンロードします。
- ダウンロード後、解凍 します。解凍すると以下のファイルが展開されます。
protect.cgi --------------------------- 認証プログラム enter.cgi ----------------------------- 入室プログラム admin.cgi ----------------------------- 管理者用プログラム manager.cgi --------------------------- ID/パスワード発行プログラム init.cgi ------------------------------ 設定ファイル cgiprot.cgi --------------------------- CGIアクセス制限用モジュール cgitest.cgi --------------------------- CGIアクセス制限テストプログラム check.cgi ----------------------------- 設定チェックプログラム lib/Jcode.pm -------------------------- コード変換モジュール [入手元] lib/CGI/Session.pm -------------------- セッション管理モジュール [入手元] lib/CGI/Session/ExpireSessions.pm ----- セッションファイル消去モジュール [入手元] data/*.* ------------------------------ データファイル private/*.* --------------------------- 隠しファイル関連 ses/ ---------------------------------- セッション用1ディレクトリ tmpl/*.* ------------------------------ テンプレートファイル
プログラムの設定及び設置
- 全体のディレクトリ構成とファイル位置の設置例は以下のとおりです(かっこ内はパーミッションの設定値)。
ディレクトリ構成例 【ディレクトリ構成例】 ※パターン1のほうがセキュリティ上安全
[パターン1] ウェブ上からアクセスできないディレクトリを作成できるサーバ
/home/USER/ | +-- private / (ウェブ上からアクセスできないディレクトリ) | | top.html ...(隠しファイルトップページ) | file1.html ...(隠しファイル第1ページ) | file2.html ...(隠しファイル第2ページ) | file3.html ...(隠しファイル第3ページ) | : | +-- data / .htpasswd [606] | .axslog [606] | .member [606] | +-- ses [707] / | +-- public_html / (公開ディレクトリ) | +-- protect / protect.cgi [705] | enter.cgi [705] ... 入室画面 | admin.cgi [705] ... 管理画面 | manager.cgi [705] | init.cgi [604] | check.cgi [705] ... 動作チェック用 | index.html | +-- lib / *.* | +-- tmpl / *.*
[パターン2] ウェブ上からアクセスできないディレクトリを作成できないサーバ
/home/USER/ | +-- public_html / (公開ディレクトリ) | +-- protect / protect.cgi [705] | enter.cgi [705] ... 入室画面 | admin.cgi [705] ... 管理画面 | manager.cgi [705] | init.cgi [604] | check.cgi [705] ... 動作チェック用 | index.html | +-- private / (隠しディレクトリ) | | .htaccess ... 外部からのアクセス拒否するため | top.html ...(隠しファイルトップページ) | file1.html ...(隠しファイル第1ページ) | file2.html ...(隠しファイル第2ページ) | file3.html ...(隠しファイル第3ページ) | : | +-- data / .htaccess ... 外部からのアクセス拒否するため | .htpasswd [606] | .axslog [606] | .member [606] | +-- lib / *.* | +-- ses [707] / *.* | +-- tmpl / *.*
- init.cgi を エディタ で開いて以下の箇所を修正します。
- $cf{password} = '0123';
- (管理画面用のパスワードを指定します)
- $cf{pwd_regist} = 3;
- (ID&パスワードの発行形態を選択します。ユーザからの発行&メンテを可能にする場合は「1」を、発行は管理者のみ。ユーザはメンテのみの場合は「2」を、発行&メンテは管理者のみの場合は「3」とします。なお、「3」を選択した場合は同梱のmanager.cgi及びindex.htmlは不要です)
- $cf{job_time} = 60;
- (ログイン後の有効時間を分単位で指定します。この値を超えると、ユーザは再度ログインすることになります)
- ${$cf{secret}}[0] = "top.html";
- (ログイン直後に表示されるトップページのファイル名を指定します)
- ${$cf{secret}}[1] = "file1.html";
- (第2ページ以降の隠しファイルを指定します)
※カギかっこ内の数字を順に増やすことで、いくつでも指定が可能。例:${$cf{secret}}[5] = 'faile5.html';など
※CGIを指定する場合は、必ず http://から記述する。例:${$cf{secret}}[6] = 'http://〜〜/bbs.cgi'; - $cf{prvdir} = './private';
- (隠しファイルを置くディレクトリのサーバパスを指定します)
- protect.cgi, admin.cgi, manager.cgi, enter.cgi, check.cgi を エディタ で開いて以下の箇所を修正します。
- #!/usr/local/bin/perl
- (プロバイダで定められたPerlへのパスを指定します)
- 次に隠しファイルトップページである top.html について説明します(添付の top.html はサンプルファイルです)。
- top.htmlをエディタで開くと、次にジャンプするページの「リンク」が記述されています。
[例] [<a href="protect.cgi?page=1">第1ページ</a>] - この ?page=1 という引数が、init.cgiで設定する ${$cf{secret}}[1] = 'file1.html'; のファイルに対応します。
- ログアウトは、?mode=logout という引数をつけます。
[例] <a href="protect.cgi?mode=logout">ログアウト</a>
- top.htmlをエディタで開くと、次にジャンプするページの「リンク」が記述されています。
- 以上、修正が完了したら各ファイルを所定のディレクトリへFTP転送し、以下のとおり アクセス権 (パーミッション) を設定します。
ファイル名 パーミッション 転送モード 備考 一般サーバ suEXECサーバ
CGIWrapサーバprotect.cgi
enter.cgi
admin.cgi
manager.cgi
check.cgi755 or 705 701 or 700 アスキー init.cgi 644 or 604 600 アスキー lib/*.pm
cgiprot.cgi
tmpl/*.html
tmpl/*.txt- - アスキー axslog.txt
htpasswd.txt
member.txt666 or 606 600 アスキー 転送後、
.axslog
.htpasswd
.member
にリネーム (*1)sesディレクトリ 777 or 707 701 or 700 - - (*1) ドットで始まるファイル
1. ドットで始まるファイルは一般に「隠しファイル」として扱われるため、FTPソフトで非表示になることがあります。
この場合には、正しく「表示」させたい場合には、FTPソフトのファイル取得コマンドの設定を変更することで可能になる場合があります。
ただし、各人の環境(FTPサーバとFTPソフトとの相性)により異なるため、ますはFTPソフトのヘルプファイルを確認し、それでも不明な場合にはプロバイダへ相談するといいと思います。2. サーバ(プロバイダ)の仕様上の問題などで、ドットで始まるファイル名が扱えない場合では、代替策として以下の案が考えられます。
(案1)
htpasswd.txt → htpasswd.cgi というように拡張子を .cgi にして外部からダウンロードできないようにする。
(案2)
htpasswd.txt → G2te53Br.log というように思いつかないようなファイル名に変更する。Tips:ファイル転送の仕方は以下のページを参考にしてください。
FTP : Windows編 FTP : Macintosh編 - 以上、作業が完了したら「チェックモード」で動作チェックを行ないましょう。「check.cgi」に直接アクセスすることで、簡易的なチェックを行うことができます。なお、動作チェック後はcheck.cgiはファイル削除しておきます。
補足事項(1)
- 隠しファイルにCGIファイル(掲示板、チャット等)を指定する場合、ファイルは以下の構成例のように配置します。
- この場合、最初は隠しファイルのトップページである top.html に一旦ジャンプさせ、top.htmlにあるCGIファイルへのリンクをクリックさせてジャンプさせます。
- なお、アクセス制限するCGIファイルは protect.cgi と必ず同一のディレクトリに置いてください。
- 隠しファイルがCGIの場合には、ジャンプ先のURLはブラウザのURL欄に表示されてしまいますが、これは仕様です。URLが分かっても、cgiprot.cgi の補助モジュールを使って後日(クッキーの有効期限の切れてからは)直接アクセスされてもアクセスを拒否します。
【ディレクトリ構成例】 /home/USER/ | +-- private / | | | +-- protect / secert.html .. (認証すると一旦ここへジャンプ) | +-- public_html / | +-- protect / protect.cgi cgiprot.cgi(補助モジュール) bbs.cgi (隠しCGIファイル)
- cgiprot.cgiの次の3か所を修正します。すべて、init.cgiの設定内容と同じとしてください。
- $cf{logfile} = './data/.axslog';
- $cf{job_time} = 60;
- $cf{gethostbyaddr} = 0;
- 次に、アクセス制限するCGIファイル(上記例だと bbs.cgi)を修正します。
CGIプログラムの上部の位置に、次の2行を書き加えます。
require './cgiprot.cgi';
&cgiprot::check;
補足事項(2)
- WebProtectでは、バイナリーファイルのプロテクトにも対応しています。現在対応しているファイル形式は以下のとおりです。
- GIF画像
- JPEG画像
- PDFファイル(データ)
- EXCELファイル(データ)
- 例えば通常隠しファイル側に画像を扱う場合、画像を public_html (公開ディレクトリ) 内に置き次のようにhttp://から始まるフルパスで指定します。
<img src="http://www.example.com/img/title.gif" alt="" />
- ただし、上記の方法だと画像そのものはプロテクトできないため、ブラウザから例えば、http://www.example.com/img/title.gif というようにURL指定することで見ることができます。
- WebProtectではバイナリーデータ(画像やアプリケーションデータ等)もプロテクトしたい方のために、以下のとおりタグを記述することでプロテクトすることが可能です。
【ディレクトリ構成例】
/home/kent/ | +-- private / top.html | file1.html | file2.html | file3.html | secret.gif | +-- public_html / index.html (ホームページ) | +-- protect / protect.cgi enter.cgi
※プロテクトするバイナリーファイルは、隠しファイルと同じディレクトリに置きます。
- 隠しファイル (HTML) におけるタグの記述方法は以下の通りです。
<img src="protect.cgi?gif=ファイル名">
- つまり、上記の例だと、top.html に、
<img src="protect.cgi?gif=secret">
と記述します。(このファイル名についてはセキュリティ上、英数字のみです)
- 隠しファイル (HTML) におけるタグの記述方法は以下の通りです。
- 各ファイルの記述例は以下のとおりです。
GIF画像 <img src="protect.cgi?gif=xxx"> JPEG画像 <img src="protect.cgi?jpeg=xxx"> PDFファイル <a href="protect.cgi?pdf=xxx">xxx.pdf</a> EXCELファイル <a href="protect.cgi?excel=xxx">xxx.xls</a>
おすすめページ