印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType 日本語限定コメントスパム対策

あまりにもコメントスパムがひどいので、禁断のコメントスパム対策を導入することにした。日本語全角文字が1文字以上なければ投稿できないというもの。サイトの文字コードが EUC であることを仮定している。

■ ■ ■

nlog(n): エラーにしないコメントスパム対策 は、スパマーに楽に突破されてしまった。noblog::短気な猫3rd: コメントスパム対策 をやっても、大量コメントスパム攻撃を受けてしまった(nlog(n): ハードディスクレコーダーからのコメントスパム攻撃)。そこで、最終手段に踏み切ることにした。これでも一時凌ぎにしかならないだろうが、やらないよりはマシ。

日本語限定にする対策として、MTPath/mt-comments.cgi を修正する例を多く見かけるが、やってみると動作がおかしい。このサイトでは、どんなコメントを入力しても「No entry_id」というエラーが表示されてしまい、投稿が受け付けられなかった。

MTPath/lib/MT/App/Comments.pm の「post」サブルーチンの中に以下の赤字で示すコードを追加する。MT 2.661 では、75行目付近になる。「require MT::Comment;」より後の方がいいようだ。

    require MT::Comment;

    unless ($q->param('text') =~ /[\x80-\xff]{2}/) {
        return $app->handle_error($app->translate(
            "Comments are not allowed on this entry."));
    }

if を使うか unless を使うかは好みによる。半角カナの入力に関しては考えていない。EUC には3バイトの文字も存在するが、これも考慮していない。そこまで厳密さを求めなくてもいいだろう、という判断である。「translate」を通しているので、日本語訳がインストールされていれば翻訳される。noblog::短気な猫3rd: コメントスパム対策 との併用も可能。

PublishCharset が UTF-8 の場合にも同じ処理でいいのかどうかは不明。

スパム攻撃とスパム対策がイタチゴッコになってしまうのは、仕方がない。郵便受けをおもてに出している限り、ダイレクトメールはポストされてしまうのである。

「いたちごっこ」について調べたら、面白いサイトを発見 - いたちごっこふたりが互いに手の甲をつねって、その手を重ねてゆく遊び。 楽しくなさそー。

2005年1月2日追記:
海外からもコメントがある場合は、Going My Way: プレビューボタンのみ表示してhashを仕込むというコメントスパム対策 がよさそうです。一度プレビューしないと投稿ができないようにするものです。これなら「鎖国」になりません。

2007年9月13日追記:
現在は,この対策とプレビュー強制の両方を行っています (nlog(n): プレビューを強制する迷惑コメント対策)。

2014年4月14日追記:
プレビューでも防げなくなってきたので CAPTCHA を導入しました (nlog(n): Tiny Gimpy で迷惑コメント対策)。

Posted by n at 2004-09-13 23:55 | Edit | Comments (4) | Trackback(13)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
コメントスパム対策
 急激に海外からの英語のコメントが増えたので、ひどくなる前にコメントスパム対策を施しました。 Googleで「コメントスパム対策」を検索したところ、皆さんお悩みのようでした。しかし、いろいろ試したところ、どれも「CGIエラー」になってしまい、最終的にたどり着いた... Trackbacked from: WorkingDaddy's Cafe at November 02, 2004 00:35
コメントスパム対策
しばらく日記を放置している間に、50件以上ものコメントスパムが蓄積されてたので、色々とググって対策してみた。まずはこっちの方で紹介されているソースをブチ込んで、現状溢れかえっていたコメントスパムを一掃してしまい、そのあとでこちらの方法で2バイト文字を含ま... Trackbacked from: The Return of 不定期戯言 MT版 at November 14, 2004 22:05
実はコメントができなかった。
D_FLOOR: コメントスパムめっ!! 以前、スパム対策で色々直したのですが、 実は、全くコメントができないことに今日気がついた。 っということで、下記を参考に直しました。 nlog(n): 日本語限定コメントスパム対策... Trackbacked from: D_FLOOR at November 15, 2004 12:25
日本語限定コメントスパム対策 for utf-8
本当にコメントスパムが多い。 IPアドレスによるフィルタリングではとても御しきれなくなった。 こんな個人メモ帳のようなblogでもこれだけスパムがやってくるんだから、人気blogはさぞ大変なことだろう。 nlog(n)さんによる「日本語限定コメントスパム対策」のutf-8対応... Trackbacked from: 死ぬまでに生きることの価値を見出せられれば オレはそれで幸せ at November 19, 2004 01:31
コメントスパム
nlog(n)さんを参考に鎖国完了。... Trackbacked from: ご飯ヤキニクブログ。 at November 19, 2004 19:16
スパムコメントに頭を悩ます。
 先週ぐらいから、本格的に英語圏からの絨毯爆撃が始まった。  日に2回ぐらい、目を離した隙に一気に30〜100件のスパムコメントを付けられる。  IPアドレスを禁止しても串を使ってるのか1件毎にIPアドレスを変えてきやがる・・・。  くそ〜!  これまではそれ... Trackbacked from: jizo.net at December 13, 2004 13:50
コメントスパムをぶっとばせ!?
すっごい前に対策してたけど最近めちゃくちゃコメントスパムが多い。。 てことで、nlog(n):日本語限定コメントスパム対策を参考に対策してみた。... Trackbacked from: NAGACY.COM at December 20, 2004 07:26
スパムコメント対策百景
ひとつ前のエントリーでスパムコメントのことをチラッと載せました。 Movable... Trackbacked from: ぷらすあるふぁ at December 23, 2004 00:17
コメントスパム多すぎ
コメントスパムが多すぎるのでここを参考に英語オンリーの書き込みをはじくように設定した。 英語のコメントがつく可能性が無いとは言えないので、念のためIndividual Entry ArchiveとComment ListingとCommment Errorの各テンプレートに以下の注意書きを追加しておいた。... Trackbacked from: Blue Pill at December 25, 2004 05:53
隨筆:對付Spam的三人會
早上1點多,被Jan叫了起來,詢問窗口自動檢〓法安裝的方法。原來安裝完之後留言的... Trackbacked from: BlogFirefox at January 09, 2005 15:47
コメントスパム
「コメントスパム」の被害にとうとうあいました。 宣伝や意味の無い内容をコメント投... Trackbacked from: MT 3.x TestSite at January 21, 2005 10:00
Spam Cutter
この一週間ほど、異様な量のコメントスパムを頂くので、ちょっとどうにかならんものかと検索してみた。
自分でMT使ってブロ... Trackbacked from: scrap book of monolog at July 17, 2005 13:39
トラックバックとこっめんとスパム対策
メールがしそうになるのでトラックバックスパムとコメントスパムの対策を実行 日本語... Trackbacked from: 知的工房 at April 14, 2006 10:58
Comments

スパム対策、参考にさせていただきました。

僕はプログラミングに詳しくないので、あまりよくはわからないのですけど、ひょっとしてunlessはifの間違いではないですか?
最初そのままコードをコピーして、英語でコメントしたところすんなり通り、日本語でコメントしたらエラーになりました。
そこでunlessをifに変えたら逆の結果になりました。

ちなみにこちらの環境はMT2.661、UTF-8で、noblog::短気な猫3rdのコメントスパム対策も併用しています。

Posted by: fuda at November 04, 2004 23:25

すみません、unlessとifが違ってるとか、そういう問題ではなかったっぽいです。
どうやら文字コードの問題のような。
いろいろお騒がせしました。

Posted by: fuda at November 04, 2004 23:41

Comments.pm にざっと目を通したところ、入力されたコメントのコード変換は行っていないようでした。お使いの文字コードが UTF-8 とのことですので、
1) マッチさせる文字列を UTF-8 用に変更する
2) このコードをそのまま使うが、手前で Jcode.pm を読み込んで 'text' を EUC に変換したものをマッチさせる
のどちらかになると思います。

Posted by: n at November 05, 2004 00:45

コメントスパム
まったく、人の迷惑を顧みない卑劣な行為ですね。
このような掲示板へのスパム投稿、コメントスパム対策についての助言も見かけられます。
下記ホームページでは、よい助言、効果的な対策が記してあります。
私もアイデアをいくつか頂こうと思います。
http://swanbay-web.hp.infoseek.co.jp/index.html

Posted by: 岡山 at August 10, 2006 16:36
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?