掲示板などのCGIプログラムにセキュリティ機能を付加することができます。
アクセス元を解析し、拒否したいアクセスを別ページへ誘導します。
また、付加機能として、特定の言葉(文字列)が含まれている場合に、その部分を置き換えたり、処理を中断するための判定を返すことができます。
NGhost_check.pl
上記ファイルを既存のperlプログラムにrequireで読み込ませ、サブルーチンを呼び出します。
組み込みたいCGIにサブルーチン呼出のため、下記1行を追記します。
require 'NGhost_check.pl'; |
【NGhost_check】
アクセスのホストを調べて拒否することができます。任意のドメインまたはIPアドレスを指定することができます。
また、リンク元を調べて身元不明のリンク元を排除することもできます。
呼出方法はサブルーチンを指定するだけです。
&NGhost_check; |
【初期設定】
サブルーチン「NGhost_check」内で初期設定をします。
#処理を拒否するホストのリスト @kill_host = ("","aaaa.com","bbbb.net","cccc.org"); |
拒否したいドメインまたはIPアドレスを記述します。必ずカンマで区切ることと、文字列を””で囲んでください。
例のように空の文字列を指定することで、アクセス元を隠蔽したアクセスに対処することができます。
#拒否する場合に表示するページ |
アクセス拒否に該当した場合に表示させるページを指定します。
#リンク元のドメインとして許可するリスト |
アクセスを許可するリンク元を指定します。これ以外からのリンクはアクセス拒否します。
【NGhost_check_text】
任意の文字列がデータに含まれている場合に、その部分を指定の文字列に置き換えます。
呼出方法はサブルーチンと判定したいデータが入った変数を指定します。
&NGhost_check_text(*text); |
上記例では、$textをサブルーチンに参照渡し(注1)しています。
複数の変数を検査したい場合は、その数だけサブルーチンの呼出が必要です。
(注1)参照渡しとは、データを別の変数へ受け渡すだけでなく、受け取った変数を書き換えると元の変数のデータが書き換わるという仕組みです。メモリを節約するために同じデータを別の変数で共有しています。
【NGhost_check_select】
任意の文字列がデータに含まれている場合に、その判定結果を呼出元のCGIに送り返します。
サブルーチンに判定したいデータの入った変数を参照渡しで指定し、戻ってくる結果をif文で判定して動作を決定します。
文字列の検査で任意の文字列がデータに含まれている場合にTrue(真)となります。(実際の戻り値は「1」)
if(&NGhost_check_select(*text)) {next;} |
上記例では、$text内のデータを判定して指定の文字列が見つかればTrueとなり{}内の命令が実行されます。
掲示板で発言を1つ1つ処理する場合、該当する発言を飛ばして次の処理を実行する場合に使用します。
もちろん、検査結果に応じて自由に処理を決定することができます。
秀麗(Shurey)
http://www.shurey.com/
[NetGurdianにて配布]
http://gurdian.ne.jp/
二次配布、改良による使用も自由にできます。
ただし、改良を施した場合、新しいreadme.htmlを付けてください。