HOME HELP 新着記事 ツリー表示 スレッド表示 トピック表示 検索 過去ログ

No10416 の記事


■10416 / )  Re[4]: VOTE COMの同一IP連続投稿防止改造時間設定版
□投稿者/ 南 -(2005/01/19(Wed) 22:09:37)
    2005/01/19(Wed) 22:10:02 編集(投稿者)

    すいません、先ほどのスクリプトに「$host」を取得する部分を忘れていました。
    ついでにとあるスクリプト
    http://fairyland.cside.com/marine/tinkcgi/index.html
    Sugiura様のTinkCGI HPで公開している「Ana-Vote」
    内に書かれていたプロクシ制限スクリプトを
    お借りした改造スクリプトもつけておきます


    votec.cgiの
    3行目:require './jcode.pl';
    以下に以下のスクリプトを入れてください。

    #プロクシらしいIPをはじく-------------------
    #===============================
    #環境変数を取得するサブルーチン
    #===============================
    sub get_user_data {
    $addr = $ENV{'REMOTE_ADDR'};
    $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2);
    $client =$ENV{'HTTP_CLIENT_IP'};
    $via = $ENV{'HTTP_VIA'};
    $xfor = $ENV{'HTTP_X_FORWARDED_FOR'};
    $for = $ENV{'HTTP_FORWARDED'};
    $agent = $ENV{'HTTP_USER_AGENT'};
    if ($xfor ne "") {$xfor_name = gethostbyaddr(pack('C4',split(/\./,$xfor)),2) || $xfor; }
    $referer = $ENV{'HTTP_REFERER'};
    }


    #==================================
    #投票制限対象を判定するサブルーチン
    #==================================
    sub reject_check {
    #プロクシ規制
    if ($reject_proxy == "1"){
    $ip = $host;
    $ip =~ s/[0-9\.]//g;
    #念のため停止 if ($ip eq "") {$rejection = 1;}
    if ($host =~ /^firewall|^router|proxy|^prx|cache|delegate|^gate|^gw|^host|^dns|keeper|cust|^mail|^www/i) {$rejection = 1;}
    #念のため停止 if ($host !~ /\.jp$/i && $host !~ /\.bbtec\.net$/i) {$rejection = 1;}
    #念のため停止 if ($via ne "" || $client ne "") {$rejection = 1;}
    }
    #教育機関、政府機関の規制
    if ($reject_acgo == "1"){
    if ($host =~ /kencho|pref|\.ac\.jp$|\.go\.jp$/i) {$rejection = 1;}
    }
    #フリープロバイダーの規制
    if ($reject_free == "1"){
    if ($host =~ /freecom.ne.jp|freeserve.ne.jp|freejpn.com|freenavi.net|livedoor.com/i) {$rejection = 1;}
    }
    #その他規制ホスト
    if ($reject_host ne ""){
    if ($host =~ /$reject_host/i) {$rejection = 1;}
    elsif ($addr =~ /$reject_host/i) {$rejection = 1;}
    }

    #特別に投票を許可するホスト
    if ($escape_host ne ""){
    if ($host =~ /$escape_host/i) {$rejection = 0;}
    elsif ($addr =~ /$escape_host/i) {$rejection = 0;}
    }
    }

    $reject_proxy = "1"; #プロクシによる投票を規制をするか 0=規制しない 1=規制する
    $reject_acgo = "0"; #教育機関や政府機関からの投票を規制するか 0=規制しない 1=規制する
    $reject_free = "0"; #フリープロバイダーからの投票を規制するか 0=規制しない 1=規制する
    $reject_host = ""; #その他、規制するホスト(ホスト名又はIPの一部でも可。複数のときは「|」で区切って指定)
    $escape_host = ""; #上の4つの投票規制対象に該当しても、特別に投票を許可するホスト(ホスト名又はIPの一部でも可。複数のときは「|」で区切って指定)

    #==================================
    #実行形式例
    #==================================
    &get_user_data;
    &reject_check;

    if ($rejection == 1){
    print "Content-type: text/html\n\n";
    print "<html><body>プロクシ接続です</body></html>";
    exit;
    }

    #-------------------------------------------


    #念のため停止
    の部分は判定がきつすぎると思うのでコメントアウトしています。
    必要に応じてコメントアウトを解除してください。

解決済み!
返信 [メール受信/OFF] 削除キー/


Pass/

HOME HELP 新着記事 ツリー表示 スレッド表示 トピック表示 検索 過去ログ

- Child Tree -