掲示板などの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を付けてください。