アーカイブ

最近のコメント

« 魔法少女隊アルス | メイン | アニメ感想6月第3週 »

Reverse Access Ranking不正対策

ひさしぶりにリバースアクセスランキングをチェックしたら
訳の分からんサイト(出会い系とか)のいくつかが異常なスコアを叩き出していました。
一応対策を施しておいたのでその内収まるはず。

 ▼以下CJ Clubさんからの転載
--------------------------------------------------------------------
JavaScript方式でカウントしている場合は以下のコードを
149行目 foreach $murl (@murl){ の前に記述
if($ENV{'HTTP_REFERER'} !~ /自サイトURL一部/ && !$SSI){
if(-e $l_f){rmdir($l_f);}
if($SSI){&html_($ARGV[1],0);}else{&gif_;}
exit;
}

SSI方式でカウントしている場合は70行目を以下のように変更
if($ARGV[0] eq "s"){if($access){&gif_; exit;}else{$access=$ENV{'HTTP_REFERER'};}}
--------------------------------------------------------------------
▼不正クリック対策
--------------------------------------------------------------------
まず、ip.log などの空ファイルを用意します。で、以下のコードを
157行目あたりの my($ad)=$ENV{'REMOTE_ADDR'}; の下に追加してみてください。

my $ipflag=0; # IPがすでにあるかのフラグ
open(IPI,"ip.log");
while (<IPI>){
if($_ eq $ad){$ipflag=1; last;}#IPがすでにある場合フラグを立てて終わり
}
close(IPI);
if($ipflag){if($SSI){&html_($ARGV[1],0);}else{&gif_;}}#フラグがたっている場合
else{#そうでない場合
if((-M "$tlog") < 1){#更新されてから1日以内ならIP追加
open(IPO,">>ip.log");
print IPO $ad;
close(IPO);
}else{#更新されて1日以上ならログをフォーマットして追加
open(IPO,">ip.log");
print IPO $ad;
close(IPO);
}
}
--------------------------------------------------------------------
▼またコチラのサイトさまの対策も導入
--------------------------------------------------------------------
access.cgiに下記記述を追加すると不正アクセスを大分防げる様です。
(@kyokaの中のURLは変更してくださいね)
*全ランクの「その他、ブックマーク等」からのアクセスはほとんどが不正アクセスです。
*http://~/access.cgi?http://www.yahoo.co.jp/ではカウントされません。

my($ad)=$ENV{'REMOTE_ADDR'};
if($access){
open(DB,"$ulog") || &er_("Can't open $ulog","1","404");
while ($urls=<DB>){
chomp($urls);
($u,$n,$tu) = split(/;/,$urls);
$u=~ tr/+/ /;
$u=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
if($access=~ /$u/i){$access="$tu"; last;}
}
close(DB);
#_________ 簡易不正対策 ここから追加
@kyoka = ("http://www.11pm.jp/app/","http://www.11pm.jp/app/index.shtml");
$fusei = "1";
foreach (@kyoka){
if($_ eq $ENV{'HTTP_REFERER'}){
$fusei = "0";
}
}
if($fusei){$access="";}
#_________ 簡易不正対策 ここまで追加
}
foreach $b (@b) {
($count,$url,$Ip,$r)=split(/<>/,$b);
if($access eq "$url"){
if($IPC && $Ip eq $ad){$flag=2; last;}
$flag=1; $count++;
$b ="$count<>$access<>$ad<>$r<>";
$b =~ s/\r\n|\r|\n//g;
$b.="\n";
}
--------------------------------------------------------------------
一応それぞれのサイトさまから直接コピペする事をおすすめします。
(転載に失敗している可能性があるので)
あと、dat、logファイルのパーミッションを600にしておきました。 
何が良かったのかは分かりませんが、現在の所完璧に防げています。ヽ(´▽`)ノ
やっぱりランキングやBBS等、カキコミや登録が出来るスクリプトの類は
しっかりメンテナンスしないとスパム業者に荒らされてダメですね~。

   関連記事:
               
  • SpamAssassin覚醒! -2007年8月23日
  •                
  • spam -2007年3月14日
  •                
  • サイトハッキング(.htaccess、index.php) -2022年2月24日
  •                
  • トラックバックあれこれ -2007年8月23日
  •                
  • コメントテスト -2007年8月13日
  •