CakePHPでreCAPTCHAによる画像認証

自作のポータルサイトシステムのお問い合わせにCAPTCHA機能の認証を付ける際に参考にさせてもらいました。

GWからCakePHPでつくりはじめたWebサービスで、画像認証を実装したいと思って、以前から気になっていたreCAPTCHAを導入した。びっくりするくらい簡単だったけど、意外とreCAPTCHA実装の記事が少ないので、丁寧に解説します。

引用元: CakePHPでreCAPTCHAによる画像認証を実装するまで – 情報と音楽.

実際、reCAPTCHAのようなWEBサービスは開発者にとってかなりの時間の削減になるので、これからもいいサービスがあれば積極的に導入していきたいです。


CakePHP リンク連打や読み込み中に再アクセスするとセッションが切れる問題

CakePHPを使ったプロジェクトでデザイナーの友達から「管理画面を使っていたらよくログアウトしてしまう。」という指摘を受けたので調べてみたら以下のフォーラムで解決策が載っていました。

CAKE_SECURITYを"high"で運用中に勝手にログアウトされる現象が多発!リンク連打等、読み込み中に再アクセスするとセッションが切れる様子。いろいろと原因を探してると、ここの記事にたどり着きました。現在は、CAKE_SECURITYを"medium"で運用しています。アクセス毎session_idを書き換えてセキュリティを高める目的なんでしょうかね?しかし、毎回読み込みが完了するまで、ユーザに触らせないようにしないと使えないですね。

引用元: "cake1.1.18にversionアップしたらSessionが使えない?" フォーラム - CakePHP Users in Japan.

実際に、ページの読み込み中に他のリンクを押すと十中八九再現が可能だったので、セッカチな人はログアウトしまくってしまうみたいです。

CakePHPのデフォルトセキュリティでは、セッションハイジャックを防ぐなどの意味で、こういう対応になっているみたいなのですが、一般ユーザに公開するようなサイトだと、これはちょっと実用的ではないので、CAKE_SECURITYを"medium"で運営するか、読み込み中はリンクを押させないような工夫が必要になってくるのではないかと思います。