ブログのコメントスパム対策の強化 (その1)
とりあえずは....Javaでキーを作成する方法です。
この方法はテンプレートもさわりますので、自信のない方は....何度でもサポート掲示板で聞いてください(^-^)
ちなみに、これを実装出来れば、現状ではほぼ完璧にコメントスパムに対抗出来ます〜〜(^^;)
SB、MT、掲示板ともに考え方は同じなので、とりあえずはSBを元に説明させて頂くようにいたします。
では続きをどうぞ!!
同じスパムでもトラックバック及びメールとコメント及び掲示板での対策は大きく異なるものがあります。
トラックバック、メールは決まった形でデータのみが送られてきます。送信元のプログラムも様々です。ですが掲示板やコメントは自分で用意したフォームから送られてくるわけです。
ということで、この送信フォームと連動したスパム対策がとれると言うことになります。
ということで「対策その1 Javaでキーを作成する方法」です
■■ 修正方法 ■■
まず何はともあれJavaScriptのファイルを作成します
メモ帳などに下記のコードを書き込んで「fmchks.js」 と言う名前で保存します
function fmchk() {
str1=String(Math.floor(65/6));
str2=String.fromCharCode(67,68);
document.cmfm.checkers.value = 'MY' + str1 + str2;
}
上記を保存したらブログ関係のどこかわかりやすいフォルダにアップロードします
で、、アップロードしたら、そのファイルを呼び出せるURLを覚えておきます
http://www.hoge.net/blog/fmchks.js
とか...保存した位置を覚えておくように..
続けてテンプレートを修正します。
テンプレートの中から「comment_form」と言う文字列を探すと、そのあたりがコメントの送信フォームの設定になってます。
その前後に
<form action="{site_cgi}" method="post">
という部分があるのでそれを
<form name="cmfm" action="{site_cgi}"
method="post">
と言うように名前を付けて...
その上の行に先ほど保存したJavaを呼び出す設定を加え...
<script type="text/javascript" src="http://www.hoge.net/blog/fmchks.js"></script>
その後ろの行に
<input type="hidden" name="checkers" value="true" />
のようなキーを追加設定します
雰囲気的に修正後はこんな感じになる
<script type="text/javascript" src="http://www.hoge.net/blog/fmchks.js"></script>
<form name="cmfm" action="{site_cgi}" method="post">
<input type="hidden" name="checkers" value="true" />
でもって、このコメント送信フォームの中から送信ボタンの記述を見つけます。。。
<input type="submit" tabindex="6" id="submit"
value="submit" />
これを下記のように修正します
<input type="submit" tabindex="6" id="submit"
value="submit" onclick="fmchk()" />
以上でテンプレートは修正完了です。
最後にプログラムを修正します
lib/sb/Receipt.pm を修正します(^0^)
コメントスパム対策コードを埋め込んだ部分をみつけて...
元は207行目あたりですが......その後の修正でずれていると思う(^^;)
その部分を下記のように修正します
以上でスパム対策強化(その1)が完了です......
これをするとどうなるの??
スパムロボットは投稿フォームを解析して、スパムを送ってきます。
と言うことで、「checkers」キーに対してその値である「true」という値を返してきます。
ですが、ここで仕込んであるJavaか効果を発揮します。
確かにフォーム解析上のvalue値は「true」ですが、人間が投稿フォームを表示して、投稿ボタンをクリックすると、クリックした時点でjavaスクリプトを実行します。。。そして、その値を書き換えてから、投稿をしてきます。
と言うことで、正しくvalue値が書き換えられている(正規の投稿)かそうでない(不正な投稿)を見分ければ、スパムか正規かがわかる訳なんです。
ちなみに、この対策を突破するスパムプログラムはまだないようなので、当分はいけそうな感じかも(^^;)
しかし、近々登場するJava SDK
には、Java解析の仕組みが付いてくるとか来ないとかなので、いつまで持つかはわかりませんが、、、少なくとも当分は完全なスパムフリー生活を送れると思います。
comments
半年くらい前からIPスパムフィルターを利用させてもらっています。大変重宝しています。ありがとうございました!
ここ最近、日本語のスパム書き込みが多くて悩んでいました。
そこでこの強化対策をしたくていろいろ試してみたのですが…。
実装できずに悩んでおります。
使っているBBSは、
http://www.j-pca.com/patio/index.cgi?mode=view&no=28
ここで紹介があったmimic2.cgiです。上記の記事を読んで、そのままDLして使っていると思います。
このBBSに強化対策を実装する方法を教えて頂けますでしょうか?お忙しいと思いますがよろしくお願いいたします!
m(__)m
もちろんそうです(^^;) C++にWEB画面を解析する関数が添付されると言うような感じで、何らかのその手のおまけが付いてくる...と言ううようなことを小耳に挟んだんですが...又聞き情報で出所は得意のいい加減モードです(^-^)
まあ、そう言うのが無ければ問題ないのですが、、、もしホントにそう言うのが出るのならこの対策が将来危なくなるかもと言うことでちょこっと書いただけです〜(^-^)
書き間違いです(^^;)...ちなみに私の得意技でもあります(^-^)
と言うことで修正しておきました〜ご迷惑をおかけしましたm(_ _)m
ちなみに、この対策とったら今のところは完璧だと思います。ただし...ホントに今のところはですけど(^-^)
ちょっと気になったのが、
Javascriptで生成したキーのチェックの部分が、
生成されるキーと比較してるキーで違ってます(´・ω・`)
これは、意図したものでしょうか?