特定のフォルダの閲覧をパスワードにより制限するためのプログラムです。
ユーザーが(あまり)意識することなく普通のホームページを作って、
それをそのフォルダごとパスワードで保護してしまうプログラムです。
(HTMLの作り方に若干ですが、制限はあります。)
Cookieによるセッション管理をしているので、
ブラウザを閉じるまではパスワード認証は有効です。
Cookieが利用できないブラウザでは利用できないと思います。
また、ブラウザを閉じると認証は終了しますので、再ログインが必要です。
【注意】
このプログラムは万全のセキュリティーを保証したものではありません。
Webサーバー等に実装されている基本認証にできるだけ近い操作を実現するために書いている
実験プログラムですので、そのプログラムを利用したことで発生した損害については
一切の責任を負いません。
htaccessによる基本認証ができるサーバーではそちらを利用することを強くお勧めします。
また、パスワード等については、基本認証同様に暗号化されずにネット上を流れますので、
それ以上の強固なセキュリティを望まれる場合は、SSL等で対応された方が賢明です。
(セッションIDで管理するのが本当なのでしょうが、
セッションIDの規則性をみつけられる方がセキュリティが低いような気がしてこうしています。)
|
具体的な仕組みについては、こちらでも解説しています。
ダウンロードしたファイルを解凍すると「passgate.cgi」「extchg1.bat」「extchg2.bat」「readme.html」
の4つのファイルに展開されます。このうち実際にサーバーに設置して使用するのは「passgate.cgi」
だけですが、その他のファイルも準備に必要ですので、下の使い方等をよくお読みになってください。
|
- 同一のフォルダ内(若しくは下位)のHTML、画像ファイルであること。
- リンクするファイルは必ず英数だけのファイル名であること、
また通常のHTML(拡張子は.htmまたは.html)であること。
- HTMLに貼り付けられている画像も保護の対象とすることが可能
(gifまたはjpegファイルのみ。)
- リンクのためのアンカータグ(<a>)が複数行にまたがっていないこと
(ソースを一行ずつ読み込んで変換しているためです。
詳細は下記「使い方」を参照。)
|
1.作成のルールに従った保護したいページを作ります。
作成のルールとは・・・
条件でも書きましたが、リンクを張るためのアンカータグ(<a>)
が複数行にまたがっていると、
複数ページのリンクがうまくいきません。作成ソフトで作る場合はご注意ください。
*HTMLソースのサンプル
【悪い例】アンカータグが2行に分かれている
1行目:<a
2行目: href="link.html">link</a>
↓
【良い例】アンカータグが一行
1行目:<a href="link.html">link</a>
または
1行目:<a href="link.html">
2行目:link</a>
要は、<a>が2行にまたがらなければOK
このあたりは次のバージョンで改良します。
|
2.HTMLファイルのみ保護する場合。(画像は保護されません)
保護したいフォルダ内のHTMLの拡張子を下記を参考にして「○○.cgi」に変更してください。
その場合、もとの拡張子の後ろに「.cgi」を追加するようにしてください。
【例】
abcd.html
abcd.htm
abcd.gif
↓
abcd.html.cgi
abcd.htm.cgi
abcd.gif.cgi
*もとの拡張子を残しているのは、そのファイルが何のファイルか認識できるようにするためです。
|
数が沢山あって大変、というときは、一括変換用のバッチファイルを用意したので、どうぞ。
(Windows用です)
[ 拡張子変換バッチ ]
ダウンロードされたファイルの中に「extchg2.bat」というのがあります。
これを、作業しているWindowsパソコンの保護したいファイルのあるフォルダに置いて、
ダブルクリックしてください。保護をしたいファイルが自動的に[ファイル名.拡張子.cgi]と変化します。
それをFTPで保護したいフォルダに置いてください。
また、下位にフォルダも保護したい場合にはそれぞれのフォルダで変更をかけてください。
(あまり複数フォルダは推奨しませんが、、、)
変更すると、元に戻すときは手動なので、気をつけてください。
変更する前にバックアップを取られることをおすすめします。
3.HTMLと画像の場合
「extchg1.bat」というファイルを保護したいフォルダに置いて、
ダブルクリックしてください。こちらのバッチファイルは、
拡張子が「html, htm, jpg, gif, jpeg」のものをcgiに変更します。
以下は2と同じです。
CGI用のPerlのソースから下記の場所(55〜57行目くらい)を探し出し、
下記の場所を「1」に変更してください。
# 画像も保護するかどうかのスイッチ(gif,jpeg,jpgの拡張子のみ対応)
# (0:off, 1:on)
$gazo_on="1";
|
4.保護したいフォルダにpassgate.cgiを置いてください。
passgate.cgiのソースファイルを開いて、必要個所を変更してください。
変更する内容に関する解説を簡単にしておきます。
一行目のPerlのパスは適宜、サーバーの環境に合わせて変更してください。
通常は、借りているサーバーのところに情報が公開されています。
#!/usr/local/bin/perl
ログインした場合に、その記録をファイルに取ることができます。
必要な場合は数字を変えてください。ただし、アクセス数が多くなってくると
ログファイルの量も膨大になります。適宜削除されることをおすすめします。
# 認証ログを取るかどうかのスイッチ
# (0:off, 1:on)
$log_on="0";
ID、パスワードを入力して最初に読み込まれるファイル名を入力してください。
ここには、拡張子を変換する前の「cgi」がつかないファイル名を書いてください。
# フォームから最初に読み込まれるファイルを記載
# 変換する前のファイル名を書いてください。
$toppage="index.htm";
ユーザIDとそれに対応するパスワードを下の例にならって入力してください。
このままだと、メンバーの数が増えたときが大変なので、後のバージョンで改良します。
# メンバー設定
@members=('user1','user2','user3');
@passwd =('abc','123','aaa');
|
5.passgate.cgiのパーミッションを705等に変更して実行権を与えてください。
これで、完了です。
suEXECなサーバーの場合、passgate.cgiのアクセス権を700、その他のファイルの
アクセス権を600にしておくと、より強固な保護をかけることが出来ると思いますが、
このあたりの設定については個々のサーバーによると思います。
また、使い方等に関する掲示板を立ててあります。
不具合等もこちらへどうぞ。(要望・ご指摘等を随時反映していきたいです。)
>>このプログラムに関する掲示板
|