![]() |
CGI Locker Help | ![]() |
Ver.3.04.03112001R
2003.11.20
Osamu Ishikawa (NV)
nv@bannaguro.net
概 要 ロッカーへのログオンリンク インストール アクセスセキュリティ コンテンツウィンドウ その他 引越,アンインストール
出先でファイルを入手したけれど、コピーするにもフロッピーディスクの持ち合わせがなくて自宅に持ち帰ることができなかった、などという不便を感じたことはありませんか?そんな場合でも、どこかの FTP サーバにアカウントを持っていると一時的に転送しておくなり、自分のメールアドレスに添付ファイルとして送信しておいて、帰宅後それを受信するという手があります。が、そうした場合でも出先で FTP クライアントソフトやメールソフトを使える環境がなければいけません。
それらの手が使えなかった場合の助け舟、として作成したのが CGI Locker です。駅などにずらっと並んだコインロッカーのイメージです(もちろんコインの投入は不要)。ネットワーク上に設置されたこのロッカーは、物理的にロッカーの前に行かなければ使えないなんてことはもちろんありません。ブラウザさえあればどこからでもコンテンツ(ファイルでもテキストでも)の出し入れが可能です。
出先にブラウザを使用できる環境さえあれば、入手したどんなファイルでも、あるいはテキストでも、とりあえず空いているロッカーを見つけて入れておき、あとで自宅であろうがどこであろうがブラウザを用いて自由にそれを取り出すことができます。逆に、自宅でコンテンツを入れておいて後で出先で取り出すということももちろん可能です。
システム管理者用 この色の項目は CGI_Locker.dll をインストールするシステム管理者用の項目です.
ロッカーを利用する一般ユーザの方は読み飛ばしてしまってかまいません.
概 要 |
● なにができるか
CGI Locker は Web 上に出し入れ自由の仮想貸ロッカーを設置する CGI アプリケーションである。設置するロッカー数はシステム管理者が任意に決めることができる。ロッカーが集まった空間 (HTML では TABLE タグで表現) をロッカープラザと呼ぶことにする。
個々のロッカーは「鍵」の代わりに「パスワード」で管理する。パスワードは厳重に保管しなければいけない。
ロッカーに収納可能なコンテンツは、あらゆる種類のファイル、および任意のテキストである。ブラウザを起動できさえすれば、ユーザはコンテンツをいつでもどこからでも出し入れ可能である。
まったく個人専用のプライベートロッカーとして、仲間内の共有ロッカーとして、あるいはまた誰にでも公開されたロッカーとして、自由に設定可能である。
ftp の代用として、あるいは簡易 BBS として、気軽に利用できると思う。
● 開発環境
DELL Dimension XPS R450 (Windows XP)
DELL Dimension XPS T600 (Windows
XP)
DELL Latitude C400 (Windows XP)
日本語版 Delphi Version 7.0
● 動作環境 (ただしインストールするサーバにおいてのみ)
ISAPI サーバアプリケーションなので、動作可能な OS は Windows (95/98/Me/NT/2000/XP/Server2003) のみである。
Windows 上で動く Web サーバであればどのシステムともインタフェース可能と考えられるが、実際には Microsoft の IIS / PWS でしか動作を確認していないので、ほかのサーバシステムの場合の動作保証はできない。
Windows Me については Web サーバが添付されていないので、Windows 98 添付の PWS 4.0 をインストールして動作確認を行った。
レジストリは一切使用せず、管理用のデータはすべて INI フアイル (Locker.ini, _Locker.ini) に記録される。INI ファイルを保存するフォルダを任意のローカルフォルダに変更することができる。
● クロスサイトスクリプティング (CSS) の脆弱性について
CGI Locker のような CGI システムの多くでは、ユーザのリクエストにしたがってその都度動的にページが表示されるわけであるが、ユーザが入力したデータ内容がページの一部としてそのまま出力される場合、無許可のスクリプトがブラウザに渡されて実行され、その結果たとえばクッキー情報を盗まれるなどのクロスサイトスクリプティング (CSS) のセキュリティ問題の危険性が指摘されている。
クロスサイトスクリプティングの脆弱性を回避するために、CGI Locker ではユーザが入力したデータの中に HTML のタグを記述するために用いられる特殊な文字 (<, >, ", ', & など) が含まれる場合、それらをページの一部として送信する時にはできるだけ変換処理を施すようにしている。
しかしロッカーへの書き込み (タイトル部分も含めて) にまで変換処理を施すと HTML のタグがすべて無効になってしまい、リンクの埋め込みはもとより書き込みの表現が味のない平板なものになってしまう。そのため CGI Locker では書き込みに関するタグの処理はシステム管理者の選択に委ねることにしている。
[ロッカー管理者の設定] ページ「テキスト中の HTML
タグ」項目で
1) すべて透過 … 書き込み内容を無変換で送信する (タグ有効)
2)
すべて禁止 … 特殊文字をすべて変換して送信する (タグ無効)
3) SCRIPT タグなどの禁止 … SCRIPT, OBJECT, EMBED,
APPLET タグを無効にする
のいずれかを選択する。
スクリプトタグなどを有効とすると、悪意のあるユーザによるクロスサイトスクリプティングの脆弱性をついた危険な書き込みがユーザのブラウザ上で実行される可能性も残っているので十分注意してほしい。
● REFERER によってセッション情報などを取得されないために
たとえばボードに書き込まれたメッセージの中にリンクが埋め込まれていた場合、 後でそのメッセージを読んだユーザがリンクをクリックするとそのときの Referer ヘッダが悪意ある Web サーバ管理者に送信されてしまうことになる可能性がある。 Referer ヘッダの中にユーザのセッション情報などが含まれていると、なりすましアクセスを許すことにつながりかねない。
その危険性を回避するために、ほとんどのコマンドボタンの送信要求を GET メソッドではなく POST メソッドとしている。その結果、ユーザのブラウザの設定によっては、フォームデータ送信時の確認警告メッセージがそのつど表示されることになる。
ロッカーへのログオンリンク |
ロッカープラザへのアクセス形態には3通りある。
アクセス形態の違いにより、ロッカーへのリンクの方法には微妙な相違がある。具体的には、同梱の LockLink.html を参照して欲しい。
インストール |
1. 実際に使用する Locker Plaza 用の物理ディレクトリを用意 / 作成する
【注意】Windows
NT/2000/XP/Server2003 で NTFS ファイルシステムである場合、Locker
Plaza 用物理ディレクトリにインターネットゲスト (匿名ユーザ) アカウントのアクセス権を設定する必要がある。インターネットゲストアカウントは通常
IUSR_computername というユーザ名になっている。
Locker Plaza 用物理ディレクトリに対して
[ファイル] - [プロパティ] - [セキュリティ] - [アクセス権] で "IUSR_ computername " を追加し、その
[アクセス権の種類] を [変更 (RWXD) (RWXD)] とする。(デフォルトでは [読み取り] のみ)
このディレクトリに、3. で CGI Locker 関連の必要なファイルをすべてコピーする。
2. Web サーバ (IIS / PWS) に仮想ディレクトリ (エイリアス) を用意 / 作成する
Web サーバはインストールされてすでに起動していることを前提とする。
作成済みの仮想ディレクトリに同居させるか、あるいはそうでない場合は仮想ディレクトリを新たに作成して 1. で用意した Locker Plaza 用の物理ディレクトリをそれに結びつけておく必要がある。
仮想ディレクトリも階層構造 (仮想ディレクトリの下に新たな仮想ディレクトリを作成することも可能) を取りうるが、ここでは必ずトップレベル (最上位) の仮想ディレクトリを使用する必要がある (下位のレベルの仮想ディレクトリを使用すると動作しない)。
アクセス許可は「読み取り」と「実行」を指定しておく。
また、認証方法では「匿名アクセス」を必ずチェック、「規定のドキュメントを有効にする」のチェックははずしておくほうが望ましい。
仮想ディレクトリの作り方については CGI_ComSys のシステム構成ページ用ヘルプ "CfgHelp.html" を参照のこと。
【注意】Windows 2000/XP +
IIS5.0/5.1 で NTFS ファイルシステムである場合、CGI Locker
内蔵のタイマ機能が動作しないことがある。
それを回避するためには Locker Plaza 用ディレクトリに Everyone
のアクセス権を追加設定しなければいけない。
Everyone のアクセス権の種類はデフォルトでは [読み取りと実行] のみであるが、これも
[変更 (RWXD) (RWXD)] とする必要がある ([書き込み] と [削除] も可能にする)。
★ Windows Server 2003 (IIS 6.0) へのインストール時の注意
それ以前の Web サーバ (IIS 5.1 まで) へのインストール時には、仮想ディレクトリ (エイリアス) に対応付けられた物理ディレクトリ (ローカルパス) は、CGI Locker 自身が自動的に認識可能だったが、IIS 6.0 になってそれができなくなった。そのため、IIS 6.0 への最初のインストール時にのみ、仮想ディレクトリに対応付けられた物理ディレクトリの入力を求められる。面倒でも物理ディレクトリをメモしておくなりして、フルパスで入力する必要がある。この問い合わせは、最初の一回のみである。
3. 用意した Locker Plaza 用デイレクトリに CGI Locker を運用するために必要な関連ファイルをすべてコピーする。
CGI_Locker.dll | CGI プログラム |
CGI_Locker.txt | 説明テキストファイル |
LockLink.html | ログオンリンク用 HTML |
LockHelp.html | このヘルプファイル |
Left.gif | ヘルプ用画像ファイル |
Right.gif | ヘルプ用画像ファイル |
ログオン用 html ファイルは、内容とも使う環境に見合う形にカスタマイズして差し支えない。
4. Web ブラウザを立ち上げログオンする。
URL 入力欄に http://localhost/alias_name/LockLink.html と入力する。
● ロッカープラザ管理者によるシステム構成用
で、Config Password を入力して [Config]
ボタンをクリックする。このパスワードが管理者パスワードとして登録される。(後で変更可能)
この段階で Locker Plaza 用ディレクトリに Locker.ini, _Locker.ini およびサブディレクトリ \Locker_Data が作成される。
Locker.ini | 下の _Locker.ini の所在をポイントするファイル |
_Locker.ini |
ユーザによるロッカーの設定値が保存される、主たる INI ファイル |
\Locker_Data |
個々のロッカーのコンテンツデータが収納されるサブディレクトリ |
Locker Plaza システムにおいては管理者パスワードは特に重要で、すべてのロッカーに対してマスターキーの機能を持つ。つまりどのロッカーに対しても管理者パスワードでログオン可能ということである。
5. システムの基本設定を行う。
ログオンすると [ロッカー管理者の設定] ページが表示される。
Locker
Plaza 用ディレクトリに [システムログファイル] が作成される。
アクセスセキュリティ |
CGI Locker の任意のロッカーをいったん開く (ログオン) と、その後閉じる (ログオフ) まで、各種コマンド/機能にリクエストがあるつど、リクエストの発行元 IP アドレスが正当なものであるかどうかを、ログオン時の IP アドレスと照合することによりチェックする。照合して IP アドレスが合致しなければリクエストは拒絶される。
固有の IP アドレスの場合アクセス中変化しないが、プロバイダ経由など動的に IP アドレスが交付された場合などにはアクセス中同一ユーザの IP アドレスが変化することがありうる (たとえば複数台の Proxy サーバを使用していてそれらの負荷を分散するためコネクションごとに IP アドレスが変化する、など)。IP アドレスは 4バイトの数字で構成されるが、変化する場合、上位 3バイトは同じ数値で最後の 1バイトのみ異なることが多い。また、上位バイトから異なる場合でも、完全なホスト名 (FQDN) の中のドメイン名 (サブドメイン名を含む) 部分は通常変わらない。
そのためアクセスセキュリティには 3つのレベル (0/1/2) を設けている。
Level = 2 | 4 バイトすべてを照合する。セキュリティは最も強固である。 この場合でも、IP マスカレードや Proxy サーバを経由していると複数のクライアントマシンが同一 IP アドレスとなることがあるので完全にチェックできるという保証はない。 |
Level = 1 | 上位 3バイトについてのみ照合し、一致すれば正当なアクセスと評価する。最下位
1バイトはチェックしない。 上位バイトが異なる場合には、さらに IP アドレスからホスト名を逆参照してドメイン名部分を照合し、一致すれば正当なアクセスと評価する。 アクセス中アドレスが変化する場合に設定する。 同一プロバイダ/企業の異なるクライアントマシンを判別できない。 |
Level = 0 | IP アドレスの照合は行わないのでセキュリティは甘い。 |
セキュリティレベルの設定は [ロッカー管理者の設定] ページ「ユーザアクセスレベル」「管理者アクセスレベル」項目でそれぞれ別個に設定する。デフォルトではどちらも 2 である。
ロッカー管理者の設定 |
|
・ システム管理者は、必ずここで必要な設定を行うこと。
・
設定内容はいつでも変更可能。
・ 「INI ファイルフォルダ」「データフォルダ」はセキュリティ上デフォルトのフォルダから
Web
ブラウザから容易には到達し得ないローカルフォルダに変更しておくことが望ましい。
デフォルトのままであると、推測して覗き見られる可能性を排除できない。
[注意] 親子関係にあるフォルダ間での変更は禁止。
・ 「状況」項目で
OPEN にチェックが入っていなければサービスが提供されない。
CLOSE
にチェックを入れることにより、一時的にサービスを中断することも可能。
HTMLパラメータの設定 |
|
・ ロッカープラザのページの装飾をここである程度カスタマイズ可能
システムログファイルリスト |
|
・ システムログの収録が開始されると、ここで上のようにログファイルリストが表示される。
・
システムログはインストール直後に Locker Plaza 用デイレクトリに作成され、それ以降ログオンしたユーザの挙動の記録を収録する。
・
ログファイル名は "Lock_yymm.log" という形式で、作成された年、月 (yymm)
が組み込まれる。すなわち一月ごとに新しいログファイルが作成される。
・
リスト中の任意のファイル名をクリックすることによりそのログ内容を表示することができる。
・
ログファイルを受信して保存するには、ファイル名の上での右ボタンクリックによるポップアップメニューを使う。
・
ログファイルリストの各行末の削除チェックボックスにチェックを入れて [Delete]
ボタンをクリックすることにより、チェックされたファイルが削除される。同時に複数のファイルを一括削除することも可能。
・
削除されたログファイルはサーバ内で物理的に削除される。(復活不能)
ロッカーの設定 |
|
・ 新たにロッカーを使用する場合、ここで必要事項を記入して [Submit]
することにより使用登録手続きが完了する。
・ 使用登録後、設定内容をいつでも変更可能。
・
ロッカー名とメールアドレスが正しく入力されていないと登録も変更も受け付けられない。
・
使用打ち切り日数、最大コンテンツ数、最大コンテンツサイズは、[ロッカー管理者の設定]
で管理者が設定したデフォルト値を超えることはできない。
ただし、システム管理者自身が管理者パスワードにより個々のロッカーにアクセスしてロッカーの設定を行う場合は、特定のロッカーに対してデフォルト値を超える設定も可能である。
デフォルト値以上の値を必要とする場合には、システム管理者に要望してみるとよい。
コンテンツの一覧および送信 |
【ロッカー # m コンテンツリスト】
|
・ 左端のリンク : コンテンツ表示リンク = クリックすると[コンテンツウィンドウ]が開き、コンテンツが表示される。
・ 2番目のリンク :
コンテンツダウンロードリンク = クリックするとそのコンテンツのダウンロードが可能。
・
コンテンツリストの各行末の削除チェックボックスにチェックを入れて [Delete]
ボタンをクリックすることにより、チェックされたコンテンツが削除される。同時に複数のファイルを一括削除することも可能。
・
削除されたコンテンツはサーバ内で物理的に削除される。(復活不能)
【テキストの送信】
|
・ コンテンツとしてテキストを書き込む。掲示板そのもの。
【ファイルの送信】
|
・ コンテンツとしてファイルを送信する。ファイルの種類は問わない。
ロッカープラザ |
現在アクセス中のロッカー # は m 番です *1 |
・ 新たにロッカーを使用する場合には
のロッカーを選んでパスワードを設定し ボタンをクリックする。
未使用
・ 既に使用しているロッカーにアクセスする場合には
のロッカーの中から自分のロッカーを選択し、パスワードを入力して
ボタンをクリックする。
使用中
・
共有ロッカーの場合には、共有パスワードを知らされたクライアントならロッカーオーナー以外でもアクセスできる。
・
一般公開ロッカーの場合には、パスワードなしで誰でもアクセス可能。
・ (*1) 現在アクセス中のロッカー #
は、必要に応じて表示される。
ロッカー使用のキャンセル |
・ ロッカーの使用を取りやめる (使用権の放棄)。
・
確認のダイアログボックスが出るが、使用権を放棄するとロッカー内のすべてのコンテンツが物理的に削除されてしまうので注意すること。
・
このコマンドボタンとは関係なく、使用打ち切り日数を越えてコンテンツの出し入れ (読み書き)
がなければ、自動的に使用権が放棄されたものとみなされる。
ログオフ |
・ ログオフする。
・
セキュリティ上からも、ロッカーに対する所定の作業が終了したら必ずログオフすること。
CGIシステムを停止できますCGI_Locker.dll のバージョンアップ (上書き) は停止状態でのみ可能です停止しなければ「共有違反」でコピーできません PWS あるいは IIS 4.0 では CGI を停止させると、同時に Web サーバも強制的に停止されることになります Web サーバが停止した場合、Web サーバを再起動する必要があります IIS 5.0/5.1 では CGI_Locker.dll が置かれた仮想ディレクトリのプロパティで 「アプリケーション保護」を [中] または [高] に設定 しておくことにより、CGI を停止させても Web サーバは停止しませんので、あえて再起動する必要はありません (「アプリケーション保護」が [低] の設定の場合は Web サーバも停止します) CGIシステムを停止するには [Halt] ボタンをクリックしてください |
・ なお、上記の表示はシステム管理者に対してのみなされる。
・
通常、システム管理者もログオフしたあとは単にブラウザを閉じるだけでよい。
・ CGI_Locker.dll
がバージョンアップされたときなど、これを上書きして差し替えようとする場合、CGI_Locker.dll が稼動状態であると「
共有違反」となってコピーできない。Webサーパか CGI_Locker.dll をいったん停止する必要がある。CGI_Locker.dll
を停止させるには [Halt] ボタンをクリックする。
・ Windows 2000/XP/Server2003 + IIS
5.0/5.1/6.0 の場合は CGI を停止しても Web サーバ自体 (IIS 5.0/5.1/6.0) はそのまま継続稼動が可能である。ただし IIS
5.0/5.1 の場合、CGI Locker が置かれた仮想ディレクトリ (エイリアス)
のプロパティで、「アプリケーション保護」を「中」または「高」に設定しておく必要がある。
・ IIS 5.0/5.1/6.0 以外の Web
サーバの場合には CGI を停止すると Web サーバそのものも同時に停止する。したがってその場合には CGI_Locker.dll の差し替えコピー後
Web サーバも再起動しなければいけない。
ヘルプの表示 |
・ このヘルプドキュメント LockHelp.html を表示する。
コンテンツウィンドウ |
[コンテンツの一覧および送信] ページのコンテンツリストで、左のリンクをクリックすると、下のようなコンテンツウィンドウがロッカープラザのメインウィンドウとは別個に表示される。
|
ひとつ前 (上 = 新しい) のコンテンツを 1ヶだけ表示 | |
現在のコンテンツより前 (新しい) のすべてのコンテンツ (テキストのみ) を一括表示 | |
フォーカスをロッカープラザのメインウィンドウに移す | |
コンテンツウィンドウのみ閉じる | |
ログオフする。メインウィンドウも閉じる | |
現在のコンテンツより後 (古い) のすべてのコンテンツ (テキストのみ) を一括表示 | |
ひとつ後 (下 = 古い) のコンテンツを 1ヶだけ表示 |
その他 |
● 引越
サーバマシンを更新したり、ディレクトリ構造を変更したりした後、CGI Locker のデータ内容をそっくりそのまま引き継いで継続運用したい場合、関連データを新しいディレクトリにコピーした後必ず、Locker Plaza 用ディレクトリに Locker_rmv.ini ファイルを用意して実行する。
Locker_rmv.ini ファイルの内容は下記の例のように
3行のみからなる。
IniFileFolder で、主たる INI ファイル
_Locker.ini が置かれているディレクトリ名をフルパスで指定し
DataFolderで、データディレクトリをフルパスで指定する。
[NewFolders] IniFileFolder=D:\Example\INI DataFolder=D:\Example\CGI\Locker\Locker_data |
引越手続きが完了すると、Locker_rmv.ini は Locker_rmv.bak にリネームされて残る。
● アンインストール
CGI Locker ではレジストリを一切使っていない。アンインストールするには INI ファイルも含めて、Locker Plaza
用のディレクトリを削除すればよい。
データディレクトリをデフォルトから変更した場合には、そのディレクトリも削除する。
● 私の Locker Plaza Demo Page
● ComSys ホームページ