« MTアップデート完了 | 減色図鑑トップ | 切手に関するコンテンツの追加目論見 »

掲示板のスパム対策

2006年05月31日

先日MTのバージョンアップを行いましたが、本当は忙しくてこんなことやる予定では・・・
という感じでした。

最近のスパムコメント・トラックバックはひどく、一日にあわせて200件以上!とてもではないですが毎日削除できる数ではなく、MTのアップグレードを余儀なくされた状態でした。
そんなこんなでマニュアルを見ながら行ったものの・・・

サイトの構築ができない!!

原因は一個前の記事でも書きましたがCPUの過負荷。
レンタルしているサーバの割り当てCPU限界を超えてしまうようで、構築中にエラーが発生しどうにもならない状態でした。

解決策は結局DBを移行する(Berkeley DB→sqlite)ことでCPUの負荷を軽減するしかないようで、私も下記のリンクを参照して移行作業を行いました。
Movable Type3.2の500エラー対策!DBをsqliteにする方法
※非常に読みやすくまとまっていて本当に助かりました!

もう、はじめからマニュアルに載せてよ!って感じですね。(違うか)


■話し変わって
ブログの方は良いとして、おーしゃんぶるーの方の掲示板。。。
スパム凄いです。
特にひどいのは海外からの宣伝書き込み。この書き込み、多分ツールで書き込みしていると思うのですが、別の掲示板ではログファイルが壊される状態・・・いい加減弾くぞ!という強い意志を持ってCGIの改造に挑みました。

で、変更したのは下記の2点
1.海外のスパムをすべて拒否!
  掲示板はPerlで書かれているものを使用しています。
  で、海外の書き込み、つまり英語の書き込みをすべて弾く方向で
  対応したいと考え、

  入力された文字数 = 日本語を加味した文字数

  と、上記の条件がなりたてば、一致した時点で日本語が含まれないと
  判断できるのでエラーにしちゃえ!と考えました。

  ところが・・・
  Perlって日本語文字列の文字数をカウントする関数はないんですね。
  ネットを探していたら下記のサブルーチン関数集を発見してそれを使用させて
  頂くことにしました。
  perl-lib.pl

  このサブルーチン関数集の日本語を考慮した文字数をカウントするklengthと
  単純に文字数をカウントする lengthで値を取得し、
  $comment1 = klength($comment);
  $comment2 = length($comment);

  if($comment1 eq $comment2) { &er_("スパム対策に引っかかっています"); }

  としてあげれば日本語を含まないコメントの投稿がエラーとなります。

  perl-lib.plを使わない方法では下記の例がありますが、いまいち防ぎきれて
  いないようです。
  if ( $comment!~ m/[\x80-\xff]/ ){ &er_("スパム対策に引っかかっています"); }

2.巧妙化した日本語スパム
  もう、禁止ワードくらいじゃどうにもならない!
  ということで、本文中の「http」文字列を入力禁止にしちゃいました。
  (掲示板の禁止ワードにいれるとURLの入力もエラーになると思う)

  これは簡単。

  $comment3 = index($comment, 'http');
  として、
  if($comment3 > 1) { &er_("スパム対策に引っかかっています"); }

  実は見つからなかったときの戻り値がわからなくて1と比較するという
  あいまいな条件になっています。(←調べろよ!)

まだスパムは続くとは思いますが、上記2点の変更でかなりのスパムを弾く
ことができると思います。

稚拙な対応で恥ずかしいですし、2の方の対応は掲示板でアドレスを
入力する一般ユーザが居る場合は使えないので「無理だYO!」って
感じでしょうか。
また、わざわざ変数($comment3等)に格納する必要もないです。



投稿者 ketumedo : 2006年05月31日 01:05

トラックバック

このエントリーのトラックバックURL:
http://www.newtokyo.net/blog/mt/mt-tb.cgi/257

コメント

ここんとこコメントスパムとかの増殖が酷いよね。

うち方のワサワサの掲示板はケントさんの原版を使わせてもらってましたが、あまりにもくるのでスパム対策のバージョンに変更しました(原版よりもかなりサイズがアップ)。
かなりの効果があるようです、スパム対策の参考にDLもよいかと。

ブログのFC2のはスパム対策が提供されているので良いのですが、問題は支店の方。
毎日コメントスパムが増殖、コメント受け付けてなくてもコメントスパムが増殖、困ったもんです。
こういうのがあると、気軽に無料レンタルサービスとかを利用するのに足踏みしちゃうのよね…
おまけにたぶん対応してもまた新たなスパムが…イタチゴッコになるだろうし…

なかなか難しいものです。

投稿者 りうか : 2006年06月02日 10:35

りうかさん、こんにちは^^
うちはCJ-CLUBさんの掲示板を利用しているのですが、ノーマルだとスパム攻撃でログが全部なくなっちゃいますT T
でも何とか現在では改造も上手くいったみたいでスパムは来ていません。
しかし・・・問題はバージョンアップしたMTの方で、バージョンアップ後から一日にスパムコメントが400位来てます。あまりキーワード制限をしたくないのでどうしようかと思っているのですが、さすがに削除が面倒。

>コメント受け付けてなくてもコメントスパムが増殖、困ったもんです。
これは・・・酷い^^;
サービス側に何とかしてもらうしかないですね。。。

>イタチゴッコになるだろうし…
日本語必須対応も対応されているみたいですし、私の改造も長くはもたないでしょう。何か画期的な対応できない対策とかでないでしょうか・・・いえ、ちょっと考えてみます、実はちょっと暇になったので(笑)

>かなりの効果があるようです、スパム対策の参考にDLもよいかと。
これ、早速DLしてみますー

投稿者 メド : 2006年06月02日 14:47

コメントしてください




保存しますか?


スパムが多いのでバージョンアップするまでコメントを承認制にします。
WARNING! COMMENT SPAM
I will report on your spam site to Google.