|
|
| [ CGI集 | CGI解説 | Perl解説 | HTML解説 | LinuxMemo | Q&A | QuizLink ] | |
不正リンク防止CGI T-FileSafe Ver.1.00 説明書(c) Takahiro Nishida 2002/10/2
about...
機能自分のページ内においてある JPEG, GIF, MIDI ファイル等を、他のページから直接リンクを張られて不正に使用されることから守るためのCGIです。ダウンロード数の集計もできます。主な特徴は以下の通り。
[index] 用途例えば以下のように使えます:
[index] 動作環境に関する注意このプログラムは、通常のHTML用ディレクトリ(public_html等)の外にファイルを置ける環境への設置を推奨します。ユーザのホーム直下がHTML用のディレクトリになっている場合や、public_html 以外の場所にファイルを置けない場合(Biglobeなど)はセキュリティ、カウント数管理が少々甘くなります。(ただ、実質的はほぼ問題ないと思われます。)後に挙げた二つような環境の場合の設置のコツについてはこちらをご覧下さい。[index] ソース(ダウンロード後、ファイル名が "-cgi.txt" となってるものを ".cgi" に変更してください)【 全ファイルをまとめてダウンロード 〜 filesafe100.lzh】 プログラム
[index] インストール方法インストール
ディレクトリ構成ディレクトリ構成は以下のようになります。($basedir="."; の場合。)カッコ内の数字はパーミッション、<〜> はディレクトリ
+ <public_html>
| + <cgi-bin>
| + <filesafe>
| + tfsafe.cgi (705)
| + access.txt (606)
| + errors.txt (606)
|
+ <tfsdata> (707)
+ config.txt (606)
+ mytools.gif (604)
[index] 使い方制限対象のファイルを置くあるファイルに対してアクセス制限をかける、または、ダウンロード数をカウントさせる方法は以下の通りです:
※ 対応しているファイルタイプ(拡張子)は、txt, html, htm, mid, jpg, gif, png, lzh, zip, mp3, mmfです。これ以外のファイルを置きたい場合はmime-typeを追加する必要があります。詳しくはこちら。
タグの例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/lzh/data.lzh にリンクを張るとき
<A HREF="http://www.foo.com/~who/cgi-bin/filesafe/tfsafe.cgi/lzh/data.lzh">
・/home/who/tfsdata/mp3/mysong.mp3 をRealAudioでストリーム再生させたいとき
<EMBED src="http://www.foo.com/~who/cgi-bin/filesafe/tfsafe.cgi/mp3/mysong.mp3" type="audio/x-pn-realaudio-plugin" autostart="true" hidden="true" nojava="true">
[index] 制限ルールの設定方法 〜 config.txtアクセス制限は、config.txt を編集することによって条件を設定することができます。
<制限ファイルの例> ※カンのいい方はこれだけで分かると思います
TARGET:mid ← 拡張子 mid に対する制限
[index] 複雑なルールの設定方法複数のルールを組み合わせる一つの拡張子に対して、URL,ADDR,HOST の条件を自由に組み立てることができます。
(よい例)
TARGET: lzh zip
但し、同じ情報(URL,ADDR,HOST)に対して、allow、deny の双方を設定しても、denyのほうは無意味です。
TARGET: png gif jpg
allow from URL www2s.biglobe.ne.jp ↑ この allow で www2s.biglobe.ne.jp 以外からのリンクが全て不許可 deny from URL www.crack.com ← この deny は無意味 URL, ADDR, HOST が不明な場合の条件を設定するたまにURL,ADDR,HOSTの情報が不明なアクセスが来ることがあります。「:unknown:」というキーワードを使うことにより、情報不明のアクセスに対する処置方法を決定できます。
deny from URL :unknown: ← リンク元不明なアクセスは拒否する
deny from ADDR :unknown: ← IPアドレスが不明なアクセスは拒否する deny from HOST :unknown: ← ホストが不明なアクセスは拒否する 主に使うのは「URL」になると思います。次のような場合、リンク元のURLが不明になります。
[index] エラーIDの意味tfsafe.cgi によってアクセスが拒否された場合、「Access Denied.」の文字とともに、拒否された理由が error ID として表示されます。error ID の意味は次の通りです。
このerror IDは、エラーログにも記録されます。 また、tfsafe.cgi の $SHOW_DETAIL_MESSAGE を 1 に設定すると、エラー時の画面に詳細メッセージも表示されるようになります。デバッグ時には便利ですが、不正アクセスに対して何故拒否されたのかを公開してしまうことはセキュリティ的にあまりよろしくないと思います。(デフォルトは 0 になってます。) [index] アクセスログ、エラーログを見るtfsafe.cgi を通してファイルにアクセスしてきた人のログは access.txt に、アクセス拒否のログは errors.txt に蓄積されています。それぞれ時刻、ホスト名、リンク元などが記録されています。管理画面(tflog.cgi)の上部から直接リンクが張られています。放っておくとどんどん大きくなります(100件で10KB位)ので、定期的に同名の空ファイルを上書きFTPして削除してください。また、tflog.cgi からは、ファイル別のアクセス数を確認できます。また以下の二つのフォームがあります:
[index] 扱えるファイルタイプを増やすT-FileSafe は、デフォルトで拡張子が txt, html, htm, mid, jpg, gif, png, lzh, zip, mp3, mmf のものを扱うことができます。これ以外の他の種類のファイル(ra, wav等)にも使えるようにしたい場合、tfsafe.cgi の下の方にある set_mime_header 関数 にファイルの拡張子と mime-type の関係を、以下のように記述します。
$HEAD{'<拡張子>'} = "<MIMEヘッダ>";
各拡張子に対応するMIMEヘッダは、ここ等を参考にするとよいでしょう。 ※ どうしてもわからない場合は、掲示板で質問してください。 [index] Note...EMBEDタグのリンク元URLは :unknown: になりますこの T-FileSafe は元々、私のところにあるMIDIファイルが、他のサイトから直接リンクされてダウンロードできるようになっているのを発見し、それに対抗するために作成したものなのですが、完成させてから使ってみたら、MIDIを演奏させるために使っているタグ、<EMBED SRC="〜"> は、リンク元 (HTTP_REFERER) が記録されない、ということに気が付きました(;_;)。しかし、MIDIファイルにEMBEDでリンクされても演奏されるだけでダウンロードはできないし(キャッシュには残りますが)、ダウンロードさせるためには A HREF でリンクを張るしかなく、それは完全に防ぐことができるので、よしとすることにしました。 ですから、MIDI等の、EMBED と A HREF の両方で呼び出す可能性のあるファイルの場合、「allow from URL :unknown:」の条件を config.txt に加えておかないと、EMBED で再生できなくなるので注意してください。 (実用例)
TARGET:mid
allow from URL http://www2s.biglobe.ne.jp/~tnishida/ ← A HREF 用に自分のページがあるURL二つ allow from URL http://www.mytools.net/ allow from URL :unknown: ← EMBEDタグ用に :unknown: も許可 [index] ログを一般の人に見せないようにするには用途によっては、アクセスログ等を訪問者に見せたくない場合もあります。その場合はログファイル名の変更と、ログ閲覧用のプログラム(tflog.cgi)の名前変更を行って下さい。手順は以下の通り。
[index] HTML用ディレクトリの外にファイルを置けない場合の設置のコツサーバによってはHTML用のディレクトリ(public_html)の外にファイルを置けない場合があります。その場合は、制限したいファイルを置くディレクトリの名前を複雑にすることによって、ダイレクトにアクセスされる可能性を低くすることができます。
(例) 但し、何らかの原因でこのディレクトリ名がバレてしまった場合は、制限が全く聞かず、カウントもされませんのでご注意下さい。万が一バレたときのことを考えて、filesafe 以下の各ディレクトリに index.html という名前の空ファイルを置いておくと、ディレクトリの一覧表示がされず、多少安全になると思います。 [index] バージョン情報バージョン履歴
[index] バージョンアップ方法0.01 → 1.000.01と1.00はログファイル、設定ファイル共に互換性がありません。最初からインストールをやり直してください。但し、プログラム名等は変わっていないので、リンク等のHTMLは変える必要はないと思います。[index] | |