Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 riference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial

迷惑な書き込みをシャットアウトする

掲示板を運用していると、特定の訪問者に迷惑な書き込みをされる場合があります。ここでは、迷惑な書き込みを行う特定の訪問者からあのアクセスを拒否する方法を考えてみましょう。

■ 訪問者をチェックする処理の定義

エディタで「libraly.pl」を開き、訪問者が利用しているホストコンピュータのアドレスとアクセスを拒否するアどれうと照合し、該当する場合はエラー画面を表示するサブルーチンを作成します。

sub do_check {
#訪問者のホスト名を取得 
local($addr)=$ENV{'REMOTE_ADDR'};
#訪問者のIPアドレスを取得
local($_)=$ENV{'REMOTE_HOST'};
#ホスト名が取得できなかった場合はIPアドレスを変数に格納
if($_ eq '') { $_ = $addr; }
#拒否したいホスト名またはIPアドレスを記述
local(@DOWN)=('123.456.10','122.345.10');
local($match) = 0;
foreach $ad (@DOWN){
#「i」オプションをつけることで大文字と小文字を区別することなく該当する文字を検索
if(/$ad/i) {$match=1; last;}
}
if($match){
&error("現在、あなたが利用しているホストコンピュータからのアクセスをお断りしています。");
}
}

■ アクセス時に「do_check」を呼び出す処理

エディタで「keijiban.cgi」を開き、サブルーチン「do_check」を呼び出す処理を記述します。

#送信データの処理を行うサブルーチンを呼び出す
&do_check;

配列変数「ANSWER」からパスワード値を取り出して照合し、入力されたパスワードが異なる場合はエラー画面を表示します。

■ 迷惑書き込み者のホストのチェック

ここでは掲示板の管理者画面で、投稿者が利用するホスト名またはIPアドレスを確認できるようにしています。例では、迷惑な書き込みを行う投稿者のアドレスを登録することで、指定したアドレスからのアクセスをシャットアウトするようにしています。訪問者がダイヤルアップ接続を利用している場合やはホスト名やIPアドレスの一部が接続のたびに変更されるため、アドレスを登録する際は固定部分のみを記述します。

ホスト名の場合
  ppp.c-rnet.co.jp → c-r.net.co.jp (「ppp」の部分は記述しない)
IPアドレスの場合
  123.456.789.10 → 123.456.789 (「10」の部分は記述しない)
なお、「,」(カンマ)で区切ることで、複数のホスト名またはIPアドレスを指定することができます。この結果、指定したホストコンピュータからのアクセスをすべてシャットアウトできます。

プロバイダのコンピュータによっては、環境変数「$ENV{'REMOTE_HOST'}」でホスト名を取得できない場合があります。そこで上例では、「$ENV{'REMOTE_HOST'}」で一旦投稿者のIPアドレスを取得しておいて、ホスト名が取得できなかった場合は、代わりにIPアドレスを取得するようにしています。ただし、一部のプロキシサーバー(特定のコンピュータの代わりに処理を代行するコンピュータのこと)は、IPアドレスを返さない場合があります。

<<<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box