« ページの構成を少し変えました | Main | 分からない @@ »


Movable Type 3.15 コメントスパムロボット対策 (チェックボックスをつける) [ MovableType ]

先月、「mt-comments のリネーム」というシンプルな処置を行い( コメントスパム対策 覚え)、うまくコメントスパマーから逃げることに成功した。
しかし、今週になってからは、10ほどの異なったipから同じ内容のコメントスパムが連日のように書き込まれるようになった。  私の、リネームしたかわいい良い子のmt-commentsのurlが、多国籍スパマー結社のコメントスパム・ロボットに捕捉されたとしか思えない、、、 イヤね〜 (`ヘ´)

この機会に新たに簡単SPAMコメント対策(MT2シリーズ対象らしい)を参考に、「コメント投稿の際にチェックボックスをチェックしてもらい、チェックがあればスパムロボットではないと判定する」対策をすることにした。 

コメント下さる皆様には一手間かかりますが、どうぞよろしくお願いいたします。、、、m(_ _)m

----------------
以下、簡単SPAMコメント対策の手法を、MT 3.15jに適用する手順のメモ。

簡単SPAMコメント対策はMT2.Xのコメント用テンプレートのクッキー書きこみスクリプト付近に対策を施すのだが、Movable Type 3.15 のコメント用テンプレートには'bakecookie'がないので探してみた。

tanakaa$ grep -lr "bakecookie" *
lib/MT/default-templates.pl
lib/MT/Template/Context.pm
php/lib/function.MTCommentFields.php

1.  編集対象ファイルのバックアップ

lib/MT/default-templates.pl lib/MT/Template/Context.pm php/lib/function.MTCommentFields.php

lib/MT/App/Comments.pm

lib/MT/L10N/ja.pm

それぞれ、バックアップを取っておく。
(例: default-templates.pl を複製して、一方をdefault-templates-org.pl とリネームする。)

2. ファイルをエディターで編集する

<input type="radio" id="remember" name="bakecookie" onclick="rememberMe(this.form)" />
のある行を検索し、その行の後半にコメントスパム対策をはめ込む。

default-templates.pl の2カ所 (1140行付近, 編集後の1214行付近)
編集後の状態(赤字が挿入部分。ここの表示は英語にしておかないと文字化けが起こる。日本語化は別のファイルで行う)

<input type="radio" id="remember" name="bakecookie" onclick="rememberMe(this.form)" /><label for="remember"><MT_TRANS phrase="Yes"></label><input type="radio" id="forget" name="bakecookie" onclick="forgetMe(this.form)" value="Forget Info" style="margin-left: 15px;" /><label for="forget"><MT_TRANS phrase="No"></label>

<br /><input type="checkbox" id="spam-stop" name="spam-stop" /><font color="red"><label for="spam-stop"><MT_TRANS phrase="Please check the Spam Protection checkbox."></label></font>

<br style="clear: both;" />

以下同様に、
lib/MT/Template/Context.pm の2カ所 (1244行付近、編集後の1332行付近)
php/lib/function.MTCommentFields.php の2カ所 (96行付近、編集後の165行付近)

3. lib/MT/App/Comments.pm の編集

lib/MT/App/Comments.pm の 243行付近 編集後(赤字に注意)
if (!$q->param('text')) {
return $app->handle_error($app->translate("Comment text is required."));
}
#Spam protection added by tanakaa
if (!$q->param('spam-stop')) {
return $app->handle_error($app->translate("Please check the Spam Protection checkbox."));
}

my ($comment, $commenter) = _make_comment($app, $entry);

4. lib/MT/L10N/ja.pm の編集

#Comments.pm に関係する部分 1171行以降
1178行付近 

'Comment text is required.' => 'コメントの本文を入力してください。',

'Please check the Spam Protection checkbox.' => 'スパム防止のためにチェックボックスにチェックして下さい',

'Registration is required.' => 'コメントを行うためには登録が必要です。',

#/Template/Context.pm に関係する部分
編集後の1036行付近(赤字に注意)


'to use it here.' => 'してください。',

'Please check the Spam Protection checkbox.' => 'スパム防止のためにチェックボックスにチェックして下さい',

#default-templates.pl 関係する部分
編集後の1431行付近(赤字に注意)

'Remember me?' => '情報を登録する?',

'Yes' => 'はい',

'No' => 'いいえ',

'Please check the Spam Protection checkbox.' => 'スパム防止のためにチェックボックスにチェックして下さい',

'Preview' => '確認',

'Post' => '投稿',

5.  個別エントリー用テンプレートの修正

別途、mt.cgiのテンプレート編集画面で、個別エントリー用テンプレートのなかの2カ所 に編集を加える。

編集後のイメージ (例です。 人によってずいぶん違うといます。 赤字に注意)

<input type="radio" id="remember" onclick="rememberMe(this.form)" name="bakecookie" /><label for="remember">はい</label><input type="radio" id="forget" name="bakecookie" onclick="forgetMe(this.form)" value="Forget Info" style="margin-left: 15px;" /><label for="forget">いいえ</label>

<br /><input type="checkbox" id="spam-stop" name="spam-stop" /><label for="spam-stop"><font color="red">コメントスパム対策のために、お手数でもチェックボックスにチェックをお願いします。</font></label>

<br style="clear: both;" />

6.  編集済みファイルのアップロード

lib/MT/default-templates.pl
lib/MT/Template/Context.pm
php/lib/function.MTCommentFields.php

lib/MT/App/Comments.pm

lib/MT/L10N/ja.pm

7.  再構築

最後にrebuildする。

コメントを投稿

せっかくですから,どうぞ一言!
(コメント表示まで,数時間以上かかることがあります。)



Colophon

Clover
Palmとの遭遇がこのページ作成のきっかけでした

Profile
mail: clover dot c at gmail dot com

2006/08/01 -
017492 (T: 125 / Y: 159)

(+ 425936 :: 2002/01/18~2006/07/31 at 旧サーバー)

RSS feed
Powered by
Movable Type 4.12 *