今日、信号待ちをしながら無意識にコメントスパムのことを考えていた私(←もう病気です!)、ひらめきました。
こういうコトは、そればかりを真剣に考えているときはひらめかないものです。
お風呂にはいっているとき
とか、
電車に乗っているとき
とか、
とにかくぜんぜん違うことをしながら、無意識にボーっと考えているときにひらめくものです。
仕事のことで「あぁ間違えてしまった...まずいっ!!」とサーっと背筋が凍る思いをするのも、電車の中だったりするものです(笑)。
仕事中には気付かないものなんです....悲っ。
さて...、運転していて、
「うーんと、formタグに日時とIPアドレスを入れたんだったっけな。」
「でも、コメントスパムがきたらどうやってチェックすればいいかな?」
「『日時はねつ造してもわかるぞ!』っと確信していたけれど、SSIで表示しているワケだから、POSTされた時間とはもちろん異なるワケだもの...」
よく気付いた!>じぶん(笑)
そこで、その対策として、
「formタグのパラメタを組み立てるSSIの中で、表示するだけじゃなくて、ファイルにセーブしておけばいいじゃん!」
っというコトを思いつきました。赤信号で....(笑)。
んーっと、セーブしておいたのと、POSTされてきたときのQueryStringを比べればいいワケだ。
ほっほっほ!!
等しくなけえば×
等しければ〇
内容はランダムなワケだし。(といっても日時だからな....ぜんぜん関係ない乱数にでもすればもっとわかりにくいかな??でも日時だと自分がログを見たときにわかりやすいもんな~笑)
もいちどまとめると...
(1)コメントを入力する画面のFORMタグにパラメタを追加する(内容は日時または乱数とIPアドレスまたはホスト名)。
(2)FORMタグに追加したパラメタと同じ内容をサーバ上のファイルにセーブしておく。
(3)コメントがPOSTされたら、QUERY_STRINGを取得し、セーブしておいたファイルと比較する。
等しいものがなければNG。
(4)等しいものがあったら、POSTしてきたIPアドレスとパラメタのIPアドレスが等しいことを確認する。
※これは、セーブしておいたファイルに複数データあったとして(このサイトではまずありえないけれど...悲)、どれを見ればいいのかを判別するために、とりあえずはIPアドレスで比較することにします。セッションIDみたいなものと考えればいいかしら?
等しくなければNG。
別にquery_stringじゃなくて、hidden項目にしてその内容を同じように可変にしてもいいのかもしれないですが、環境変数で取れる簡単お手軽方法です。
どちらにしても、これで一発屋はアウトですよね!
これでも、もしコメントスパムが来るとすれば、それは一件一件手でコメントをコピペ入力しているワケで..それもなんだか笑えちゃいます。
......ですよね?
なにかどこか見逃しているかしら??
短い赤信号の時間に考えついたネタなので、あまりたいしたことはないかも(苦笑)
投稿者 megu : 2004年08月31日 22:12
