<<  2007.9  >>
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
30      
 
リンク
その他
  • RSS2.0
  • Credit

  • SEO
    loading

    プライバシーポリシー

カテゴリー » ソフトウェア » ppblog September 02, 2007

ppBlog コメントスパム対策に四苦八苦

なんか30ぐらいコメントスパムがどばーーと来襲。これ書いている間にもいろんなIPアドレスで同じようなスパムが寄せられております。これまでは日本語が入ってない投稿を拒否するだけでほとんど十分だったんだけど、今日来たのはいつもとひと味違う。文末に該当記事の一部を挿入して送ってくるので弾くことができない。

ということで鬱陶しいので何とかする。パッと思い付いたのは一度に投稿できる「http」の数を制限する方法。コメントスパムには大量のURLが書かれている事が多い。他にもないかなと調べてみると、リファラで自サイト以外からの書き込みを拒否するやり方がメジャーらしい。偽装されたら意味無いだろうけど。

このサイトは ppBlog1.4.3 で構成されています。その modules/comment.php の適当な場所にこんなコードを書いてみた。
///// コメントスパム対策 //////
if(!ADMIN){
//httpの数が多いと弾く
if(substr_count(strtolower($c_com), 'http') >= 4){
  print "「http」が4つ以上ある文章は書き込めません";
  exit;
}
//携帯はチェックしない
if(!preg_match('/docomo|up\.browser|j\-phone|softbank|vodafone|pdxgw|astel|l\-mode/i',$_SERVER['HTTP_USER_AGENT'])){
  //記事のURL以外からは拒否
  if(!stristr($_SERVER['HTTP_REFERER'], ROOT_PATH.'index.php?UID='.$UID)){
    print "どこからコメントしてるの?";
    exit;
  }
  // ブラウザの言語設定で、日本語が含まれていないと拒否
  // 入力内容に日本語が入っていても、弾く
  if(!stristr($_SERVER["HTTP_ACCEPT_LANGUAGE"], "ja")){
    print "鎖国してます";
    exit;
  }
}}
おぉ、スパムを弾くことに成功。PHP初心者向けプログラミングサイトを見て頑張った甲斐があった。最新の v1.6 系ではこういうの無くても大丈夫なのかな?

しばらくこれで様子を見る。
11:30 pm | コメントする |

上の記事に対するコメント

1. くま (Website)  2007/09/07 20:06
これいいですね!何行目あたりに入れるとよいのかな?
教えていただけるとありがたいです。

2. Owner CommentSawa  2007/09/07 22:24
おひさです。
くまさんは 1.5RC でバージョンが違うため正確には言えませんが、modules/comment.php の半分より下ぐらいにある

switch ($mode){
case 'cast_comment' :

の真下に書けば良いと思います。
ただ、1.5.3以前にはコメントスパムを弾いてもコメントが1個あると表示されるバグがあって、イヤンな感じだったりします。


累計:19752、今日:1144、昨日:834
Created in 0.0163 sec.