watermint.org

Takayuki Okazaki's blog

Share on Facebook
Share on GREE
このエントリーをはてなブックマークに追加
はてなブックマーク - 第二次コメントスパム対策, その2

日本語しか受け付けないようにするプラグインを作って導入し、テストしています。とりあえず、日本語と英語についてはテストがだいたい終わったので、つぎは別の言語についても試してみる事にしました。
Mac OS Xは多言語対応で、わりと簡単に新しい言語の入力方式を設定する事ができます。「システム環境設定」から「言語環境」→ 「入力メニュー」といくと、使いたい言語を選べるようになります。今回は、とりあえず中国語と韓国語をテストしてみる事にしました。タイ語とか、アラビア語、ロシア語もやってみてもおもしろいかもしれませんが、入力方法がいまいちわからないのでとりあえず保留しておきます。
Choosing Input Method
設定をするとこういう感じで、韓国語や中国語(今回はSimplified Chineseにしました)の入力にも切り替える事ができるようになります。

さて、まずは中国語から。中国語は日本語でいうローマ字変換のように、中国語の幹事の読みをピンインというアルファベット表記で入力する事ができます。そして日本語の漢字変換のときと同じようにこのピンインで入力して、変換をすれば良いわけです。
Write Chinese comment
今回の例で言うと、「nihao, zuijinmangma? womenyiqizouba」と入力して変換しています。さて、これでコメントをポストしてみましょう。
Chinese Comment accepted
あれ?入力が受け付けられてしまいました。文字コードの設定を、Windows-31Jにしたり、Shift_JISやISO-2022-JPを試してみましたが同じです。残念・・・・。

もうこの時点で韓国語の入力も受け付けられてしまうだろうなという雰囲気は漂っているのですが、韓国語をどういう風に入力するのかはちょっと興味があったので試してみました(主旨変わっとるがな(笑))。
ハングル文字は表音文字で、日本語で言えばひらがなかカタカナみたいなものです。一見、丸と棒の記号みたいな感じですが、文字は一文字を構成する部品に分けられ(子音と母音のようにわかれている)、その単位で入力していきます。韓国語入力モードにすると、それぞれのキーがそれらの部品に対応するようになってきます。なので次のようなキーボード配列に従って入力していきます(Source: Wikipedia)。
Keyboard Layout Hangul
さて、では早速ハングルを入力してみましょう。
Korean Comment
できました。さて、コメントを投稿してみます。
Korean Comment accepted
まあ、予想通りというか、入力できてしまいました。

そんなこんなで、結局日本語だけしか受け付けないプラグインというよりは、英語をはじくプラグインという様相を呈してきました(笑) 、まあそれはそれで実用性があるのでいいんですが。

Share on Facebook
Share on GREE
このエントリーをはてなブックマークに追加
はてなブックマーク - 第二次コメントスパム対策

だいぶ前に導入したDid You Pass Mathというコメントスパム対策のプラグインを入れているのですがやはりこれだけではあまりたいした効果がありませんでした。
ただ、コメントスパムはそのほとんどが日本以外からのもので、英語、タイ語、中国語、ロシア語、ドイツ語あたりのコメントでアダルト的なURLだったり、違法なお薬販売だったり、違法コピーの販売案内だったりのコメントがついていました。そこで今回はあらたに「コメントには一切、日本語以外受け付けない!」というポリシーを追加する事にしました。

これを適用すると、URLだけぴろっと貼っているようなコメント、英語や、その他読めない言語のスパムはだいたい防げるだろうという思惑です。WordPressのプラグインの作り方はあまり詳しく知らないのですが、Did You Pass Mathのソースを参考に作り上げました。

ちなみに、コメントが日本語なのかそれ以外なのか?をどういう風に判断しているかというと、PHPのbool mb_check_encoding([string var, [string encoding]]) という関数を使っています。まず、この関数で日本語には無い文字を使っている場合、例えば中国語とか、タイ語とか、は簡単に排除する事ができます。ただ、英語となると日本語の文字列の中にも英語は含まれるので「英語だけで構成されている場合には排除する」というようにしなければなりません。
griphs.png
日本語のコメントは上図のようになっているので、日本語だけか、日本語・英語まじりのコメントだけを受け付けるのであれば次の式が trueになる場合のみコメントを受け付ければ良いことになります。

mb_encoding_check($comment, "EUC_JP")
&& !mb_encoding_check($comment, "ASCII")

(ここではEUC_JPにしていますが、SHIFT_JISとかでも良いと思います。クライアンとがウインドウズであることを想定するならWindows-31Jが適切かも・・・?)

そんなこんなでプラグインは出来上がりました。まだ、できたてで不安なのでもうちょっとテストできたらどこかで公開しようと思います。

Share on Facebook
Share on GREE
このエントリーをはてなブックマークに追加
はてなブックマーク - WordPressのコメントスパム対策プラグイン

Web 2.0という社会風潮、というか、やっぱり一方的な独り言にするのはどうかな〜と思っていることから、なるべくコメント機能をオフにするということはしたくなかったんですが、ロボット型のスパム(迷惑コメント)がとても多くてうんざりしていたためにしばらくの間コメント機能をオフにしていました。

別のブログでは、あんまりそういった状況になっていなかったのでWordPressのスパム防御がちょっと物足りないなーと思っていました。というのもWordPressに最初からついているスパム防御機能はキーワードでのフィルタリングとか、IPアドレスでのフィルタリングで、スパムをちゃんと防ごうと思ったらそれらのフィルタをスパムがくるたびに追加していかなくてはならず、とても面倒でした。

ウイルス対策ソフトのウイルスパターンようにそういったフィルターのパターンを提供してくれるサービスがあってもまあ良さそうですが、やり始めるとフィルターのデータベースだけで相当な容量になりそうだしちょっとその選択肢は無いな〜と思っていました。

Did You Pass Math?

それならば、とプラグインを探したところDid You Pass Math?というプラグインを見つけました。これはコメントを記入してもらうときに簡単な計算をしてもらい、その答えが合っていればコメントが投稿できるという最近よく見かけるタイプのスパム対策システムです。

まあ、これもスパム送信側がDid You Pass Math?用に対策をしてきたら、いたちごっこですが、まあそのときはそのときにまた対策するとしてこれを使うことにしました。使おうと思った時点では日本語版はなかったんですが、簡単な作業だったので日本語化して組み込みました。日本語版は作者のStevenさんに送付したのでそのうち統合されるかもしれません :-)