[index]
[index]
【
全ファイルをまとめてダウンロード 〜 filesafe000.lzh】
プログラム
[index]
(telnetの場合)
※注1 データファイルをプログラムと同じ場所に置く場合は $basedir=".";のままで。
(telnetの場合)
(telnetの場合)
(telnetの場合)
[index]
■ index
■ 機能
自分のページ内においてある JPEG, GIF, MIDI ファイル等を、他のページから直接リンクを張られて不正に使用されることから守るためのCGIです。ファイルはURLツリーの外に置くことになりますが、 tfsafe.cgi/<filename> というURLで今までどおり使用できます。主な特徴は以下の通り。
■ 動作環境に関する注意
このプログラムは、アクセス制限をかけたいファイルを通常のHTMLディレクトリの外に置いて、プログラムを通してそのファイルを取得する仕組みになっています。したがって、通常のHTML用ディレクトリ(public_html等)の外にファイルを置ける環境が必要です。ユーザのホーム直下がHTML用のディレクトリになっている場合や、public_html 以外の場所にファイルを置けない場合(Biglobeなど)は使用できません。
■ ソース
(ダウンロード後、ファイル名が "-cgi.txt" となってるものを ".cgi" に変更してください)
インストール方法
■ インストール
※ 例として次のような環境を考える。
プログラムの場所:/home/who/public_html/cgi-bin/filesafe
制限するファイルを置く場所:/home/who/tfsdata
以下の説明は各自の環境に合わせて置き換えて読んで下さい。
以上でインストールは完了です。
※ ダウンロード方法はソースをダウンロードするを参照。
% chmod 707 tfsdata
※ 詳しくはPerlのパスを設定するを参照。
※注2 ここの例では $rootdir = "/home/who/tfsdata"; となります。
% chmod 705 tfsafe.cgi
% chmod 604 config.txt
% chmod 604 tscgi.gif
→ 「Access Denied」と表示されればOK。
※ 上のように表示されない場合、ブラウザでアクセスするを参照して問題を解決してください。
→ これ
が表示されればOK。
■ ディレクトリ構成
ディレクトリ構成は以下のようになります。($basedir="."; の場合。)
カッコ内の数字はパーミッション、<〜> はディレクトリ
+ <public_html>
| + <cgi-bin>
| + <filesafe>
| + tfsafe.cgi (705)
|
|
+ <tfsdata> (707)
+ config.txt (606)
+ tscgi.gif (604)
使い方
■ アクセス制限をかけたいファイルを置く
制限をかけたいファイル(jpg, gif, mid 等)は、tfsdataの下にFTPして、パーミッションを604に設定して下さい。各ファイルには、
| (tfsafe.cgiのURL)/<tfsdataからのパス> |
|---|
tfsdata の下にディレクトリを作ることもできます。その場合、新しく作ったディレクトリのパーミッションは707にして下さい。
■ 例 ■
tfsafe.cgi が、http://www.foo.com/~who/cgi-bin/filesafe/tfsafe.cgi に、
tfsdata が、/home/who/tfsdata/ にある場合。
・画像 /home/who/tfsdata/title.gif を表示させたいとき
| <IMG SRC="http://www.foo.com/~who/cgi-bin/filesafe/tfsafe.cgi/title.gif"> |
|---|
・/home/who/tfsdata/midi/archive/data.lzh にリンクを張るとき
| <A HREF="http://www.foo.com/~who/cgi-bin/filesafe/tfsafe.cgi/midi/archive/data.lzh"> |
|---|
[index]
■ 制限ルールの設定方法 〜 config.txt
アクセス制限は、config.txt を編集することによって条件を設定することができます。config.txt の文法は次のようになります。
| [allow|deny] from [URL|ADDR|HOST] <keyword> |
|---|
| allow from URL <URL> |
|---|
| deny from URL <URL> |
|---|
| allow from ADDR <IP-Address> |
|---|
| deny from ADDR <IP-Address> |
|---|
| allow from HOST <HOST-NAME> |
|---|
| deny from HOST <HOST-NAME> |
|---|
[index]
■ 複数の条件を組み合わせる
以下のように記述することによって、複数の条件をつけることもできます。
|
allow from URL http://www2s.biglobe.ne.jp/~tnishida/ allow from URL http://www5.big.or.jp/~nishida/ deny from HOST crack |
→ http://www2s.biglobe.ne.jp/~tnishida/ と http://www5.big.or.jp/~nishida/ からのリンクを辿ってきた場合のみアクセスを許可するが、ホスト名に crack を含む場合は不許可。
■ 注意 ■
URL, ADDR, HOST それぞれについて、allow を設定すると、allow に記述されていない URL, ADDR, HOST からのアクセスは全て不許可になります。すなわち、allow がある場合、同じ情報に関する deny が無意味になります。
(例)
|
allow from URL http://www2s.biglobe.ne.jp/~tnishida/ deny from URL http://www.crack.com/ |
[index]
※ MIDI を EMBED タグで貼り付けている場合は、allow from URL :unknown: を設定しないと演奏されません。詳しくは、EMBEDタグはリンク元が残りません!を参照。
[index]
error IDは、エラーログにも記録されます。
[index]
→ アクセスログの例
又、tfsafe.cgi によってアクセスを拒否された人のログを取ることができます。$basedir で指定したディレクトリ ($basedir="."; の場合は、tfsafe.cgi と同じディレクトリ)に、errors.txt という名前の空ファイルをFTPして、パーミッションを606にして下さい。そのファイルの中にエラーログが記録されるようになります。記録される内容は、日時、エラーID、ファイル名、リンク元URL、アクセスした人のIPアドレスとホスト名です。エラーIDの意味はこちら。
→ エラーログの例
[index]
■ URL, ADDR, HOST が不明な場合の条件を設定する
次のような場合、リンク元のURLが不明になります。
又、場合によってはIPアドレスやホスト名が不明になる場合もあります。各情報が不明な場合の条件を設定するには、:unknown: という keyword を使います。
▼ 例 ▼
allow from URL :unknown:
deny from ADDR :unknown:
deny from HOST :unknown:
■ エラーIDの意味
tfsafe.cgi によってアクセスが拒否された場合、「Access Denied.」の文字とともに、拒否された理由が error ID として表示されます。error ID の意味は次の通りです。
■ アクセスログ、エラーログを取る
tfsafe.cgi を通してファイルにアクセスしてきた人のログを取ることができます。$basedir で指定したディレクトリ ($basedir="."; の場合は、tfsafe.cgi と同じディレクトリ)に、access.txt という名前の空ファイルをFTPして、パーミッションを606にして下さい。そのファイルの中にアクセスログが記録されるようになります。記録される内容は、日時、ファイル名、リンク元URL、アクセスした人のIPアドレスとホスト名です。
■ 扱えるファイルタイプを増やす
T-FileSafe は、デフォルトで拡張子が gif, jpg, mid, txt, html, htm, lzh, zip のものを扱うことができます。他の種類のファイル(ra, wav等)にも使えるようにしたい場合、tfsafe.cgi の下の方にある set_mime_header 関数 にファイルの拡張子と mime-type の関係を、以下のように記述します。
| $HEAD{'<拡張子>'} = "<MIMEヘッダ>"; |
|---|
各拡張子に対応する MIMEヘッダ は、Netscape Navigator 3.XX だと 「オプション - 一般の設定 - ヘルパー」で調べることができます。
※ どうしてもわからない場合は、掲示板で質問してください。
[index]
しかし、MIDIファイルにEMBEDでリンクされても演奏されるだけでダウンロードはできないし(キャッシュには残りますが)、ダウンロードさせるためには A HREF でリンクを張るしかなく、それは完全に防ぐことができるので、よしとすることにしました。
ですから、MIDI等の、EMBED と A HREF の両方で呼び出す可能性のあるファイルの場合、「allow from URL :unknown:」の条件を config.txt に加えておかないと、EMBED で再生できなくなるので注意してください。
▼ 参照 ▼
Note...
■ EMBEDタグは必ず :unknown: になるようです
この T-FileSafe は元々、私のところにあるMIDIファイルが、他のサイトから直接リンクされてダウンロードできるようになっているのを発見し、それに対抗するために作成したものなのですが、完成させてから使ってみたら、MIDIを演奏させるために使っているタグ、<EMBED SRC="〜"> は、リンク元 (HTTP_REFERER) が記録されない、ということに気が付きました(;_;)。
|
allow from URL http://www2s.biglobe.ne.jp/~tnishida/ allow from URL http://www5.big.or.jp/~nishida/ allow from URL :unknown: |
[index]
バージョンアップ
■ バージョン履歴
(02/2/26) 更新ミス修正
説明ミス修正(IP -> ADDR)