Home > 雑記 > コメントスパム対策とMT4標準Captchaのvalid化

コメントスパム対策とMT4標準Captchaのvalid化

さて、MT4に標準で実装されましたCaptchaを導入しました。

Captchaっていうのは、結論だけ説明すると、コンピュータか人間かを判別して、自動化されたコンピュータからの認証や投稿処理を行わせないようにするシステムのことです(たぶん)。
画像見て英文字等入力するあれです。コメント欄を見ていただければ「あーあれね!」と分かると思います。
(追記:現在はCaptchaでないスパム対策をしています。)
あとはみwikiさんに聞いてください。

Captchaを導入するまでに少し経緯がありまして、、、あっ、いつものごとく前書きが長くなりそうなので、
MT4Captchaのvalid化へのアンカー

さて、最近海外からのコメントスパムが激しくて、1日300件ぐらい送られてきています。少し前に、RBLサービス(IPブラックリスト)の「spamhaus.org」をスパム判定に使うのをやめました。spamhaus.orgは確かにスパム撃退にかなり強力な威力を発揮してくれるのですが、その強力さと、大雑把さゆえにスパムじゃないIPアドレスからのコメントも巻き添えにしてしまうようです。
参考リンク
Web屋のネタ帳:spamhaus.orgをはじめとするIPアドレスベースのブラックリスト(RBL)を使ってはいけない
実際このブログでもこのサービスにより貴重なコメントを3回ほどスパムと判定されてしまっていました。
まぁでも他のブラックリストサービスは使用していまして、
bsb.spamlookup.net
RBL.JPのall.rbl.jp
上記2つのサーバを利用しております。
しかしspamhaus.orgを使用しなくなったためか、海外からのスパムコメントの多くがスパムと判定されなくなってしまいました。

そこで、数週間前から2バイト文字の入っていないコメントを弾くプラグイン「NotJapaneseLookup」を使用させていただいています。それにより現在海外からのコメントは100%カットされています。
ただ、2バイト文字云々は、英語圏からの正常なコメントも確実にスパムと判定してしまいます(まぁコメントある可能性はほぼ0%だと思うのですが)。それが少し精神的にいやですので、とりあえず、Captchaを導入して様子を見て、機能してくれるようなら前述の2バイトのプラグインを外そうかなと思ったわけです。

MT4のCaptchaのvalid化に話を移します。
まず、MTをバージョンアップした人はCaptchaを利用するために幾つか手順が必要です。
詳しくは・・・
あやの日常あるいは平穏な日々:【MT4.0】コメントスパム対策しましたをごらん下さい。とても分かりやすく書かれています。
結局のところ<$MTCaptchaFields$>タグを書いた部分に

<div class="label">
 <label for="captcha_code">Captcha:</label>
</div>
<div class="field">
<input type="hidden" name="token" value="~" />
  <img src="~" width="150" height="35" /><br />
 <input name="captcha_code" id="captcha-code" value="" />
<p>画像の中に見える文字を入力してください。</p>
</div>

上記コードが挿入されるということです。ただ、少なくとも赤文字の部分が原因でxhtmlではvalidになりません。
・imgにはalt属性を付加する必要がある。
・labelのfor属性の値は他のタグのID属性として指定されているべき。(captcha-code→captcha_code)
あと、アクセシビリティのことを考えるとtabindexやaccesskeyも指定したほうがいいですね(まぁCaptcha自体がアレなのですが)。
以上を踏まえると例えばこんな感じに修正できるかもしれません↓

<div class="label">
 <label for="captcha_code">Captcha:</label>
</div>
<div class="field">
<input type="hidden" name="token" value="~" />
  <img src="~" width="150" height="35" alt="Captcha Image" /><br />
 <input name="captcha_code" id="captcha_code" value="" tabindex="~" accesskey="~" />
<p>画像の中に見える文字を入力してください。</p>
</div>

さて、修正するライブラリファイルですが、2つあります。
MTインストールフォルダからの相対パスは
1./lib/MT/Util/Captcha.pm (54~64行目位)
2./php/lib/captcha_lib.php (39~48行目位)
上記ファイルをテキストエディタで開いて適当に修正。アップロード。(バックアップを取っておいた方が良いかもしれません。)
1はスタティックなページで表示する用。2はダイナミックパブリッシングのページで表示する用(だと思います)。

恐らくファイルの中を見れば分かりますが、修正する時の注意点としては、、、
・$がついているものは変数なので扱いに注意する。($captionとか)
・2のファイルではダブルクウォート”をバックスラッシュ\でエスケープする。(value=\”\”といった感じ)

う~ん、肝心な修正の仕方を極端に省略してしまいましたが、まぁ分からなければコメント欄でってことでお願いします。
でもこれすると、バージョンアップのとき大変ですよね・・・ということで忘れないように覚え書きでした。

それにしてもいつものごとく読みにくいから困る。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
Listed below are links to weblogs that reference
コメントスパム対策とMT4標準Captchaのvalid化 from おやすみばっか

Home > 雑記 > コメントスパム対策とMT4標準Captchaのvalid化

Link
メタ情報

Return to page top