SSブログ
Lancers.jp

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付きでログに書き込むようにできた。

まだまだ、フレームワーク(というか、オブジェクト指向)って物に不慣れなので、ついつい遠回りをしてしまってる気がするよ。




nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。