2013年1月3日 : してログ

昨日取り付けたばかりのコメントシステムだが、最初のコメントは案の定、スパムコメントでした。しかも何と早いことか。昨日の今日で、バ○アグラがなんたらとか言う英語のスパムが書き込まれてしまいました。検索エンジンのスパイダーと違って、UA 偽装してたりするだろうから、本当に迷惑な話だと思います。

こういったスパム対策はユーザーの利便性を損ねないと完全に解決することができないだけに、いつも悩む点であり、ウェブで何かを運営する際に萎えてしまう点でもあります。この先、画像認証を導入するのか、承認制を導入するのか、ロボット判定を頑張るのか、何れにしても楽しくない作業が待っています。

よく使われる画像認証は、本来と無関係な作業をユーザーに強いてしまう、障害を持った人を排除してしまう(聴覚を使った認証もあるが)、などあまり好きな解決方法ではないです。画像認証以外の人間らしさの判定も幾つかあげてみます。

  • あり得ない速度での投稿(フォームの提供から投稿ボタンを押されるまでの時間が余りにも短いとき)
  • ページ内の画像などが要求されていない(フォーム狙いでクロールされているなら画像は要求しないだろう→見えない画像タグに投稿トリガーを仕込んでおく)
  • JavaScript でキーイベントを見る(フォームに実際入力されたか判断できそう)
  • JavaScript で確認ダイアログを入れる
  • submit ボタンをやめて、通常ボタンと JavaScript で投稿させる

まあ、上にあげたようなことは、昔あるプロジェクトで散々やりましたが、結局どれも突破されてしまうんですよね。画像認証にしても OCR と組み合わせて突破するプログラムもあるし、JavaScript で色々工夫しても実際のブラウザを自動運転するようなやつが相手だと意味が無いです。

キャッシュファイル処理などでよく使う手法で、mod_rewrite を使い実ファイルが存在していればそれを表示し、まだ作成されていなかったらスクリプトを動かしてレスポンスを返しつつファイルを保存する、という常套手段があります。それを実現するには、下記のようにしますが、少し盲点があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+\.html)$ /_system/doc.php?d=$1
RewriteRule ^(.+\.htm)$ /_system/doc.php?d=$1

一行目の指定は、実ファイルがあれば RewriteRule を適用しない、という意味になりますが、これは直後の RewriteRule にしか効かないため、三行目の指定は実ファイルがあってもスクリプトが常に動くことになります。三行目も同様にしたい場合は、下記のように書きます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+\.html)$ /_system/doc.php?d=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+\.htm)$ /_system/doc.php?d=$1

分かっていないと「何で~」と悩むに違いない盲点です。

Open Web Analytics は、PHP と MySQL で作られたオープンソースのアクセス解析システムです。画面は、Google Analytics にそっくりで、ぱっと見たら見分けがつかないくらいよく似ています。

Open Web Analytics
http://www.openwebanalytics.com/

インストールは、MySQL のデータベースを作り、サイトに展開した OWA の install.php を実行すれば、後は指示に従うだけとなります。インストール後は、Google Analytics と同じような JavaScript をコントロールパネルから発行でき、解析したいウェブサイトに埋め込むことで解析が始まります。また、埋込み用 PHP コードもあり、もっと細かく制御することが可能です。

機能的には Google Analytics の代わりとして十分であり、代替えの選択肢となり得ます。