トップページに戻る

Category

AllArchives

Checker

Credit

ReadMe!不正投票マニュアル(3)

ReadMe!不正投票マニュアル(1)

ReadMe!不正投票マニュアル(2)

最後に安全性に関して。

何度も書きますがCGIはブラックボックスです。「投票処理」には当然「不正投票を防止する」というルーチンが組み込まれているはずですが外部からそれは見えません。


とりあえず「どのような問題点が考えられるのか」というのをピックアップしてみます。外部から処理が見えない以上、「〜考えられるのか」を考えることしか僕らには出来ない。


□1:プロキシ経由の投票だということ

投票処理には「プロキシからの投票を無効化」といった制限がかかっているかもしれません。さて、この「プロキシからの」なんですが、CGI単体で「プロキシからか生か」を断言する方法はこの世にありません。ある有名な掲示板スクリプトの「アクセスがプロキシ経由か判断するルーチン」を書いておきます。

if($ENV{'HTTP_VIA'} ne "" ){$use_proxy = 1;}

「ne」は「not equal」。いわゆる「プロキシ特有の環境変数」の参照。

if($ENV{'HTTP_X_FORWARDED_FOR'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_FORWARDED'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_X_LOCKING'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_CACHE_INFO'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_CACHE_CONTROL'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_SP_HOST'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_FROM'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_PROXY_CONNECTION'} ne ""){$use_proxy = 1;}

if($ENV{'HTTP_USER_AGENT'} =~ /via|cache|proxy|delegate/i){$use_proxy = 1;}

「=~ /A|B|・・・/i」は「AかBか・・・の少なくとも一つが含まれている」。USER AGENTに特定キーワードが含まれているか。

if($ENV{'REMOTE_HOST'} =~ /proxy|cache|via|delegate|www|mail/i){$use_proxy = 1;}

$ENV{'〜'}は環境変数です。「様々な環境変数を使って判断している」ということに注目して下さい。逆に言えば「『ここを調べればプロキシかどうか分かる』という場所はない」ということです。

もちろんリストに登録したプロキシの一部は上記のような「串弾き」にひっかかるでしょう。弾かれないプロキシもあるでしょう。

□2:機械任せだということ

ReadMe!不正投票マニュアル(1)の方法では投票間隔が大体一定になります。例えば「前々回の投票と前回の投票の間隔」と「前回の投票と今回の投票の間隔」。

「大体一定」という言い方をしたのは、「回線の関係で正確に一定になる訳ではない」ということですが。

「正確に一定」でない以上、不正投票防止ルーチンがこの不自然さに気付くことはおそらくないとは思います。しかし人間は気付くかもしれません。つまりReadMe!スタッフがログを見れば。

不安ならばJavaScriptとの連動で「リロード間隔に乱数を使う」という処理を行えばいいでしょう。具体的なソースは書きませんが。

□3:プロキシにログが残る

よく「プロキシ非万能性」を語る際に言われることですが、プロキシサーバーに接続ログが残ります。ReadMe!スタッフが「このサイトは不正投票をしていないか?」と目を付けた場合。プロキシサーバーにログ提出を求め接続者の生IPを知ることが可能でしょう。

SeeAlso

SameSubCategory

Footprint

Navigation

TrackBack

この記事へのトラックバック

Comment

ここは始めて見ます。

パソコン上に置くとどうしても、不正と判断されるサイトがありました。
逆アクセスで、設置URLから来ているかどうかを確認していました。
cookieを削除・IPを変更でサイト上のバナーから直接押すのが無難です。

不正で儲かってたもの 2005/09/09 16:31:14

逆アクセス、というのはRefererチェックのことですかね?
詳細は割愛しますが、もしRefererチェックであれば、HTTPヘッダを書き換えることでチェックを潜ることが可能です。Proxomitronというツールでヘッダの書き換えを行えば多分不正投票可能だと思いますよ
まぁ、もちろん手動が一番無難ですけどねー

tokix 2005/09/13 02:36:57

PostForm

情報を登録  
コメントは本文以外省略可能で、当方の承認後掲載されます