ZAPAnet総合情報局 > [Z]ZAPAブロ〜グ2.0 > プログラミングTIPS > CAPTCHAよりも優れた日本向けスパム対策

CAPTCHAよりも優れた日本向けスパム対策

このエントリーをはてなブックマークに追加
2008年03月02日 カテゴリ:プログラミングTIPS
これから入会するユーザーにとって、もっともイライラさせられるシステムの一つが、「ユーザー登録時のCAPTCHA文字入力」。

例えば、とあるSNSへの新規登録時には、以下のような読みにくい文字を確認文字として入力しなければいけません。(*1)


人間にとっては、「読みにくくて打ちにくい」とても困ったシステムです。
しかも、最近ではコンピュータの解析能力が進化して、機械的に読み取られ、スパム対策にもなっていないという話もあります。

CAPTCHAは、スパム対策のために「外国で作られたシステム」であるため、その対策方法も広範に知れ渡っています。
半角英数字しか使っていないシステムがほとんどのせいで、破るための理論が実装されるのも仕方ないことかもしれません。

でも、日本でしか使わないシステムなら、日本用のスパム対策をすることで簡単にスパムを防ぐことができます。


どうするかというと、それはとても簡単で、以下のような設問を1つ設けるだけでスパム対策ができます。
”ねこ”とひらがなで入力してください
この設問を1つ設けて、ユーザーに「ねこ」と入力させるだけでOKです。
「ねこ」と入力できていなければ、ユーザー登録を拒否します。

一般的に外国のスパムロボットや、外国人スパマーは「ひらがな」を理解できません。
これだけで、多数のコンピュータと60億人近い日本語を知らない人たちへのスパム対策が完了します。

入力させる”ねこ”の部分は定期的に変更することや、この文字列自体をJavaScriptで表示させることによって、さらに強度が上がります。

また、JavaScriptを使って出力する文字列を分割させることで、よりコンピュータの解析を困難にさせることができます。例えば(*2)
<script type="text/javascript">
<!--
var a="ね";
var b="こ";
var c="と";
var d="ひらがなで入力してください";
document.write(a+b+c+d);
// -->
</script>
このようにするだけでも、コンピュータを惑わせることができます。
HTMLファイルやJavaScriptファイルを機械的に検索しても、「ねこ」という2文字にはなりません。
JavaScriptの実行結果まで調べないと、出力される文字列がわからないため、高度なスパムツールでないと破れなくなります。(*3)

他にも、日本人なら誰にでもわかるようなクイズを出したりすることで、対策の幅を広げることができます。わざわざ、ランダムに画像を生成する必要さえありません。コンピュータにとって解読が難しくても、日本人には簡単に解読できます。

外国製のスパムロボット相手なら、これだけでも相当な効果を上げることができます。


何も、外国製のシステムばかり使わなくても、日本人なら日本人向けのシステムを考えることで、簡単にスパム対策ができますよ、というお話しでした。



(*1)このSNSでCAPTCHAシステムを変更していないのは、そもそも入会したい人がほとんど存在しないためです
(*2)あくまでも、「例えば」の話です
(*3)最近のgoogleボットはJavaScriptの実行結果も解析しています