[掲示板]

anti spam key機能について / Sakura Mizuki 2009-08-11 (火) 00:11

こんばんは。

rNoteを使用しているSakura Mizukiと言います。

公式掲示板にも書いている質問なのですが、当サイトでも
Anti Spam Keyを実装しているようなので、どうやって
ページごとのランダムな数値を取得し、表示しているのか
気になっています。(認証方式はrNote本家とちょっと
違っていたので値の取得方式に関してだけの質問です。)

ちなみに私の方で実装したいのは本家と同じ6桁出力です。
ご教授いただけると幸いです。
[ コメントの受付は終了しています ]
1: hogemonia_mk2 (管理人) (08/11 15:08)
Sakura Mizuki さま

こんにちは。
EarthRiZE管理人のhogemonia_mk2です。

Mizukiさんの仰るように、このサイトEarthRiZEではAnti Spam Keyを実装しているのですが、このサイトで実装しているのは、値の変化しないものでした。(BBSとコメント投稿の部分は別の値を設定していただけでした...)

しかし、確かにMizukiさんの言うようなランダムに変化するほうがいいかな~、っと私も思いましたので、急遽ランダムに値を変更するプログラム(とまではいえないかもしれませんが...)を作成しました。

実際に掲示板の部分に組み込んで見ましたので、アクセス毎に6ケタのAnti Spam Keyが変化することをご確認ください。

以下が、その方法となりますが、rnote.phpを編集することになるので、何かあったときのためにバックアップなどをとるようにお願いします。また、何分私はマジメにPHPなどを勉強したことがなく、どこかで変なことをやってしまっているかもしれません。変なところなどありましたらご指摘頂けたら...と思います。

それではまず、以下の内容のファイルを作成し、random_anti_spam_key.phpという名前で保存してください。
(保存する際は文字コードがUTF-8となるように注意してください)
そして、rnote.phpと同じフォルダへアップロードしてください。

-----random_anti_spam_key.php------

<?php

//セッション開始
session_start();

//100000~999999のランダムに変わる数値を取得
$random_ask = rand(100000,999999);

//セッション変数に保存
$_SESSION['random_anti_spam_key'] = $random_ask;

//参照元のページにアンチスパムキーを出力
echo "document.write(\"".$random_ask."\");";

?>

-------------------------------------

今回は、rNoteのコメント投稿の部分にランダムアンチスパムキーを実装するということで、
entriesフォルダ内のwriteback.skinファイルの<p>url or email (option):~~~~とある下に

  <p>anti spam key [<script type="text/javascript" src="random_anti_spam_key.php"></script>]:   <input type="text" name="antispam_keyword_wb" size="50" maxlength="30" /><br/></p>

という行を追加します。

続いて、rnote.phpをエディタで開いて、
1行目の<?php直下の行(2行目)に
  session_start();
という行を加えてください。

次に、66行目辺りの// messagesとある付近に
  define(WB_ERR_BAD_ANTISPAM,'投稿キーが間違っています。投稿画面に戻ってやり直してください。');
という一行を追加してください。

その次に、506行目付近の// WriteBackの近くに
  $file = $_GET['u']; <514行目辺り>
     と
  DoublePostChk($name.$com); <516行目辺り>
という2つの行がありますので
この2行の間に

  //以下antispamkey用
  if($_POST['antispam_keyword_wb'] != $_SESSION['random_anti_spam_key']){error(WB_ERR_BAD_ANTISPAM,ERR_WB);}

という行を追加してください。

以上で、改造完了です。
rNoteの管理ツールから再構築を実行して、正常に動作するかどうかをご確認ください。

何分、急いで作って急いでアップロードしているので、変なことやっているかもしれませんがご勘弁の程を...
最新版のrNoteをダウンロードしてきて、上の方法でランダムアンチスパムキーを実装したところ、問題なく動作したので大丈夫だとは思います。
2: hogemonia_mk2 (管理人) (08/11 15:20)
私のところは6ケタのAnti Spam Keyが変化云々書いていましたが、先ほど8ケタに変更しました。
また、普通のコメント投稿の部分にもRandam Anti Spam Keyを組み込みましたのでご覧ください、です。

あと、いまさらながら、何だかMizukiさんの欲しい返答とは少し違った返答となってしまったかもしれません..。
3: hogemonia_mk2 (管理人) (08/11 16:59)
http://blog.mct-lab.com/rnote.php?u=site_history/history_20090811_01.htm
に関連記事をアップロードしました。
もしよろしければ、こちらのほうもあわせてご覧ください。
(といっても、ほとんどがここで返答させていただいたときに打ち込んだ文章の流用ですが...)
4: Sakura Mizuki (08/11 23:55)
返信ありがとうございます。

本家(rinn氏)のHTMLソースを見るとhidden属性で
ハッシュ値を持たせて、ハッシュ値と入力したキーのハッシュ値が
あっているかどうかで認証しているのでは…と考えています。

ちなみに元々の方式ではどうやってAntiSpamKeyの値を
取得されていたのでしょうか?(ここでも本家でもコメントを
書き込んだり削除するとAntiSpamKeyの値が変化したような
気がしますが…。)
5: hogemonia_mk2 (管理人) (08/13 17:09)
Sakura Mizuki さま

こんにちは&こんばんわ。
EarthRiZE管理人のhogemonia_mk2です。

Mizukiさんの仰っている方法(本家と同じ、「ハッシュ値を持たせて、ハッシュ値と入力したキーのハッシュ値が
あっているかどうかで認証」する方式)での、ランダムアンチスパムキー認証のrNote用プラグインを作成しました。

現在、公開ページの準備をしていますので、今しばらくお待ちください、です。
(説明下手なので、コードを書くという方法でしかお手伝いできませんでした。)
6: hogemonia_mk2 (管理人) (08/13 22:07)
Sakura Mizuki さま

こんばんわ&こんにちは。
EarthRiZE管理人のhogemonia_mk2です。

少々予告から遅くなってしまいましたが、以下のページでMizukiさんの仰っている方法(本家と同じ、「ハッシュ値を持たせて、ハッシュ値と入力したキーのハッシュ値があっているかどうかで認証」する方式)での、ランダムアンチスパムキー認証のrNote用プラグインを公開しました。

http://blog.mct-lab.com/rnote.php?u=program/rnote_plugins/rask.htm

もしよろしければ、一度ご覧ください。
また、EarthRiZEのコメント投稿部分と掲示板書き込み部分にも導入しましたので、このページのHTMLソースの方もあわせてご覧ください、です。

それでは、失礼します。
今回は私も良い勉強になりました。
何かありましたら、またどうぞ~、です。
(もっとも、これからは少々バタバタしていることが多いので、対応が少し...というか大分遅くなってしまうかもかも、です。)