対策方法
このページに書いてあることは、CGIの知識がないと分からないと思います。詳しく分からない人は、ここの掲示板レンタルサービスや、ネットサーフレスキューなどで配られている無料CGIスクリプト(プログラム)などを利用されることをお勧めします。他の掲示板レンタルサービスでもほとんどの場合対策はされています。
無料スクリプトなどのタグ禁止部分に、危険なタグで書かれているタグを付け加えれば、他の安全なタグまで禁止にする必要はありません。
でも、出来れば少々時間を割いてCGIの事を勉強されるといいと思います(*^^*)
難しいことはありませんから・・。詳しい説明がされてるサイトへリンク
ログ飛ばし物量攻撃等の場合、書き込みはほとんど、外部の掲示板などから行われています。この手の攻撃を無効にする一番いい方法は、「HTTP_REFERERという環境変数の値をチェックする」ことです。
HTTP_REFERERの値はブラウザが前に表示していたページのURLなので(ブックマークやURL直接入力のときは空です)、投稿時、この値に自分の掲示板のURLが入っていなければ外部からの書き込みと判断出来ます。
minibbs.cgiの新しいバージョンではこのチェックが入っています。書き込みの時、(ログファイルに追記の時)HTTP_REFERERの値と掲示板のURLが同じかどうかチェックします。
$REFERER = $ENV{'HTTP_REFERER'};
$URL = "自分の掲示板URL";
if ($REFERER ne $URL) {
URLが違うとのエラーメッセージ
}
ただ、URLの一部をIPで表示させたりwwwが付いても付かなくても同じ画面が表示されるなど一部のサーバーではこのような単純なチェックではうまく行かない時もあります。。また、ガブリエナイなどのアプリケーションを使用された場合、防御が無効になってしまう時もあります。これは対策のしようがありません。。
また、プロクシサーバーからの書き込みを禁止してしまう方法もあります。アングラ掲示板では利用者の多くがプロクシサーバーを経由しているので禁止に出来ない側面もありますが・・・。
方法として、HTTP_PROXY_CONNECTION , HTTP_CACHE_INFO , HTTP_VIAなどの値を見ます。
それぞれの変数に何かしら値が入っていたらプロクシ経由と見るものです。
$CONNECTION = $ENV{'HTTP_PROXY_CONNECTION'};
$INFO = $ENV{'HTTP_CACHE_INFO'};
$VIA = $ENV{'HTTP_VIA'};
if ( $CONNECTION ne "" ) {
&proxyerror;
}
if ( $INFO ne "" ) {
&proxyerror;
}
if ( $VIA ne "" ) {
&proxyerror;
}
sub proxyerror{
エラーメッセージ;
}
現在主流となっている攻撃方法に、イメージタグ書き込みがあります。これは掲示板アタックのページで述べていますが、postメソッドの掲示板ではgetメソッドの書き込みも受け付けてしまう、ということを利用したものです。minibbsの最新版ではこの方法も出来なくなっていますから、それを利用するのもいいかもしれません。
ただし、レンタル掲示板のようなサービスでは、部屋番号をgetで表示しているところもありますから、この方法は、
通常のCGI掲示板でしか通用しません。
if ($ENV{'QUERY_STRING'} ne ''){
$errmsg="イメタグえらー?";
&errrr;
}
メソッドgetのフォーム投稿の場合、$ENV{'QUERY_STRING'}という変数の中にフォーム投稿内容が収められていますから、通常のCGI掲示板でしたら、
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else { $buffer = $ENV{'QUERY_STRING'};
}
となっているところを探して、
}else { $buffer = $ENV{'QUERY_STRING'};
の部分を削除してしまうのもいいかもしれません。
分からないことやお困りのことがあれば、遠慮なくメール下さい(-_^;;;;;;;;;;;;;;;
まったくCGIなんて知らなくてもOKです。
(C)1997 -1998アリス=リデル
All rights reserved.