CakePHP その4 - Securityコンポーネント - [CakePHP]
今日の進歩は、データ送信寺のセキュリティ関連。
まずは、フォームタグを直書きではなく、Htmlヘルパーを使うと、"data[_Token][key]"っつーhiddenタグができる。これは毎回値が変わって、その値で不正かどうか調べるらしい。
この"data[_Token][key]"を調べるタイミングは、メソッドが呼ばれる前。つまり、beforeFilter()に書くのが一番良いのかな。
function beforeFilter() { $this->Security->requireAuth('モデル名'); }
これを、モデル.phpに書いても良いんだけど、毎回必要そうなので、app_controller.phpに書く事にした。モデル名はいくつでも追加できるしね。
で、これで不正アクセスをチェックできるようにしたところ、不正アクセスした場合は、画面が真っ白になってしまって、何が起こったか訳分からんので、画面表示を出すように設定。
まず、/controllers/components/security.php の51行目の $blackHoleCallback に表示用の関数を指定する。関数名は、分かりやすいように blackhole() にした。
var $blackHoleCallback = 'blackhole';
で、肝心のblackhole()をどこに書くというと、そのまま app_controller.php に記述。
function blackhole(){ $model = $this->modelClass; $ip = $this->RequestHandler->getClientIP(); $this->log("{$model} : Blackhole : {$ip}"); //▼表示用 $res = "不正なリクエストです"; $url = strtolower( $model ); $this->flash($res,"/{$url}/",'5'); }
これで、どのモデルで起こったか、IP付きでログに書き込むようにできた。
まだまだ、フレームワーク(というか、オブジェクト指向)って物に不慣れなので、ついつい遠回りをしてしまってる気がするよ。
2007-06-27 23:49
nice!(0)
コメント(0)
トラックバック(0)
コメント 0