*** lib/MT/App/Comments.pm.orig	2006-08-04 06:15:31.000000000 +0900
--- lib/MT/App/Comments.pm	2007-02-07 19:26:40.000000000 +0900
***************
*** 265,270 ****
--- 265,291 ----
         return $app->handle_error($app->translate("Comment text is required."));
      } 
  
+     # ダイジェストを作成
+     require Digest::SHA1;
+     my $sha1 = Digest::SHA1->new;
+     my $sha1_token = $q->param('text') . $q->param('entry_id') . $app->remote_ip . $q->param('author') . $q->param('email') . $q->param('url');
+     $sha1_token =~ s/\x0D\x0A//g;
+     $sha1_token =~ s/\x0D//g;
+     $sha1_token =~ s/\x0A//g;
+     $sha1->add($sha1_token);
+     my $salt_file = MT::ConfigMgr->instance->PluginPath .'/salt.txt';
+     my $FH;
+     open($FH, $salt_file) or die "cannot open file <$salt_file> ($!)";
+     $sha1->addfile($FH);
+     close $FH; 
+     my $digest = $sha1->b64digest . "=";
+ 
+     # validatedで送られてきたダイジェストと比較
+     if ($q->param('validated') ne $digest) {
+     return $app->handle_error($app->translate(
+             "コメントの投稿はプレビュー画面から行ってください。"));
+     }
+ 
      my ($comment, $commenter) = _make_comment($app, $entry);
      my $remember = $q->param('bakecookie') || 0;
      $remember = 0 if $remember eq 'Forget Info'; # another value for '0'
