トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/302

ページの作成や編集にはユーザ登録が必要です。

MD5認証を加えたcommentプラグイン

  • 投稿者: michieru
  • カテゴリ: 修正
  • 優先度: 低
  • 状態: 提案

 内容

comment_key_20060713_1.zip(457)が最新。

BugTrack-plugin/301に引き続きcommentプラグインを改造し、「秘密のキー+ページ名」をDigest::MD5でエンコードしたcomment_keyをコメントフォームに仕込んで認証するようにしてみました。

見た目は標準のcommentプラグインと変わりません。

「秘密のキー」はプラグインのインストール時に自動決定しますが、管理者メニューから変更することもできます。

なお、標準のcommentプラグインの置き換えとして作ってあるので、commentプラグイン(その他comment系プラグイン)をoffにする必要があります。

この仕組みは、tDiary用の「コメントキーフィルタ&プラグイン」を基にしてあります。

 コメント

  • 試してみました。「HTMLソースのcomment_keyのvalue値を予め調べておいてからでないとプログラムによる自動投稿は出来ない」ということですね? もしくは、「ソースを自動取得してcomment_keyのvalue値を読み込んで自動挿入するようプログラムを設計しなければプログラムによる自動投稿はできない」と言うことですね? 回避法がある、という意味では完全とは言えないかもしれませんが、見た目や操作方法が従来どおりのままなのにそれなりの阻止効果が有る、という意味ではそこそこ使えそうですね。かなりいい線をいっているような気がします。ということで、ここまで来ているなら、これをもう少し発展させて、プログラムによる自動投稿がより難しくなるような手段を発見してみたいな、と思いました。九九認証は、一通りのパターンを解読されてそれに合わせてプログラミングをされるまでは効果を発揮します。対応されるまで、ある程度長い期間は安全です。が、九九の答えを入力しなければならない、という面倒さもありました。(これは大きな欠点) それに対して、こちらのプラグインは回避用のプログラム作成こそ九九認証よりは簡単ですが、ユーザに対する負担は何もありません。(ここが魅力) 両方に共通して言えることは、回避するためのプログラム作成に少なからず時間がかかり、その間はプログラムによるスパム被害からは解放される、という点です。ということで、ここでヒントのようなものを思い付きました。それは、回避するためのプログラムをチョコチョコ変更しなければプログラムによる自動投稿ができなくなるような手段を実装してやることができればスパムの被害をかなり抑えられるのではないか、ということです。完全な案はまだ思い付いていませんが、今思い付いた案を少し紹介しておきます。「name="comment_key"」の「comment_key」の部分も可変になるようにしてみてはいかがでしょう? そうすればプログラムによる自動取得がより難しくなります。もっと発展させて、ダミーのcomment_key(もちろんスペルは可変)も入れるようにしておけば(もちろん、正comment_keyと偽comment_keyの並び順も可変にする)、ちょっとやそっとではプログラムよる回避はできなくなると思います。新規ページ作成も、「action=NEW」のページを表示させたときに公開鍵を日付等で自動生成して埋め込むようにすれば、同じようなことができそうです。いずれも、「絶対に回避できない」という代物ではありませんが、被害を最小限に留める効果は期待できそうです。もちろん、もっとより良い方法を探して採用していくのがより理想です。是非、より本格的に煮詰めていってみませんか? - あき (2006年07月12日 19時57分54秒)
  • 勢いでコメントしてしまいました。ダミーのcomment_keyは何も効果有りませんね。もっといろいろ考えてみます。もし、本当にいい手段が有るなら(FSWikiに限らず)きっと誰かがそれを実装してみせてくれている筈だとは思いますが、「時間稼ぎ」という発想の元でなら、何か良い手段が有るような気がしています。 - あき (2006年07月12日 20時18分09秒)
  • 「秘密のキー+ページ名」では、秘密のキーを変更しない限りcomment_keyの値は固定になってしまうので、日時と連動した値を加味できると良いんですが。仮に日にちでも入れてみますかね?日をまたぐとコメント記入が拒否されてしまいますが。(汗) - michieru (2006年07月12日 20時46分56秒)
  • 午前中は当日の日付でチェックして違ったら前日の日付でもチェックするようにしたらどうでしょう? - typer (2006年07月12日 21時04分49秒)
  • comment_key_20060712_2.zip(425)」にて、typerさん指摘の方法を組み込んでみました。現在の時刻の日にちと、現在の時刻から12時間分引いたものの日にちでチェックしています。(机上チェックしかしてない。) - michieru (2006年07月12日 21時29分24秒)
  • 現在日時を利用する、というのは良い案だと思います。他に、現時点で使えないかな?と考えているので言えば、クッキーの利用です。ただ、モバイル端末からのアクセス等ではクッキーが利用できないことも多いかと思いますので、制限事項となる点が引っかかっています。クッキーにすることの利点は、「セッションが異なると投稿できない」といった状態が作り出せるかな、という点。ただ、ページを表示する度に、「その時だけ有効なユニークな情報」というものを生成できなければ、保存されて利用されてしまうと全く意味がないので、その当たりも吟味する必要があります。この辺りも、現在日時等から生成できると効果的ですね。ですが、プログラムならその辺の情報も瞬時に取得して利用できてしまいますので、完全とは言えないです。やはり何か、「認証方法自体がコロコロと変わって、そのバリエーションが無限に近いくらい存在する」という方法そのものを考えないと決定的とは言えそうにありませんね。無限に近い認証方法を実際に実装することが可能か?と考えると無理っぽい気さえしてきます。ただ、「name="comment_key"」の「comment_key」の部分を可変にする、といった案は、現実的な有効な手段だと思います。こういった案がもっといろいろ出てくれば、もっと見通しが明るくなりそうなのですが…。 - あき (2006年07月12日 21時45分42秒)
  • 「現在の時刻から12時間分引いたものの日にちでチェックしています。」>これは駄目な気がします。現在の時刻から12時間分引いたものにすると、午前中にページを開いて投稿しようとした場合、前日の日付と照合してしまうことになりませんか? 私の気のせいでしたらすみません。 - あき (2006年07月12日 21時53分33秒)
  • あ、すみません。ソースを見ると、「今日の日付でマッチしなかった場合だけ、半日前と比べる」になってますね。失礼致しました。 - あき (2006年07月12日 22時00分24秒)
  • comment_key_20060712_3.zip(431)」として、「name="comment_key"」自体もMD5エンコードしてみました。 - michieru (2006年07月12日 22時02分11秒)
  • 今更ですが、localtime()での変換は不要だった気がします。秒の単位のままで、例えば3600で割った商で比較(マッチしなかった場合さらに1800引いた後に3600で割った商でもで比較)するなどすればもっと細かい変化も出せたのかなぁ、と…。もちろん、今更ですので修正は不要です。 - あき (2006年07月12日 22時20分28秒)
  • comment_key_20060712_3.zip を入れてみました。良い感じですね。今のところ最良だと思います。パッと見、スパム投稿プログラムを作成しようとした人は、「何だこりゃ?」となってくれそうな気がします。現地点ではこれが限界ですかね? 他に方法がないか、合間合間で考えてみます。 - あき (2006年07月12日 22時34分34秒)
  • comment_key_20060712_4.zip(407)」にて、キーの名前とキーの値の両方を、管理者メニューから変更できるように改良しました。config/comment_key.datを一旦削除してから管理者メニューで設定しなおしてください。ちなみに、3600で割るというアイディアは盛り込まれておりません。(汗) - michieru (2006年07月12日 22時36分01秒)
  • あ、これ、tDiaryにあったやつを移植したような感じなのですね? ですが、移植元より多少堅牢には仕上がりましたね。(笑) しかしまぁ、誰も考えることは似てるのですね。「より強固な策」という考察ですら、自分が考えていたことと同じようなことを書いてます。う〜ん、誰も思いつかないような斬新なアイデアは無いものか…。 - あき (2006年07月12日 23時00分09秒)
  • セッション管理やCookieやjavascriptなどに依存しない方式で考える限界、っていう気がします。 - michieru (2006年07月12日 23時06分47秒)
  • 管理者メニューでの秘密のキーの入力ですが、これは不要な気がします。他のサイトと被るのが問題だと言うのでしたら、初っ端のconfig/comment_key.datを生成する時に日時から生成してしまえば良いのでは? - あき (2006年07月13日 09時14分29秒)
  • 現状、管理者メニューの「コメントキーの設定」を開いて「設定を保存」をしないと、config/comment_key.datを作らない仕組みになっていて、どこで生成するかタイミングがわかってないのです。(プラグインのインストールとしてonされたタイミングが良いのかもしれないですが・・。) - michieru (2006年07月13日 09時42分15秒)
  • comment_key_20060713_1.zip(457)」に更新しました。Install.pm内のsub installにて初期値を自動生成するようになりました。設定値を変更したいときだけ、「コメントキーの設定」で設定しなおせば良いことになります。これで設置しやすくなりましたかね? - michieru (2006年07月13日 10時06分37秒)
お名前: コメント: