Posts tagged security

[CakePHP] SSL 接続を必須にする SSL コンポーネント

0

CakePHP で SSL 接続を必須にするには以前書いた、Security コンポーネントを使う方法があります。
CakePHP1.2 Security コンポーネントを使用して SSL でのみアクセスを許可する

しかし、単純に SSL 接続を必須にしたい場合は、Baker にある SSL コンポーネントを使うのが簡単です。
Component for forcing a secure connection (Articles) | The Bakery, Everything CakePHP
(続きを読む…)

[iPhone] 実機転送時にセキュリティーエラーになった時の対処方法

0

Xcode から iPhone にアプリを転送しようとしたら、コンソールに下記のエラーメッセージが出て転送できませんでした。

Error launching remote program: security policy error.

原因と解決方法を先に書くと、原因は期限が切れたプロファイルがあったためで、解決方法は期限切れのプロファイルを削除すると無事転送できるようになりました。

この期限切れのプロファイルは転送するアプリで使用しているプロファイルとは関係なくてもセキュリティーエラーに引っかかるようです。今回も実際に転送するアプリとは違うアプリで使用しているプロファイルが期限切れでした。
(続きを読む…)

CakePHP1.2 Security コンポーネントを使用して SSL でのみアクセスを許可する

0

開発案件でアクション毎に SSL でのアクセスを必須にしたかったので調べていたところ下記の情報がありました。

SSL経由でのアクセスを必須にする[CakePHP] YARETOKO「ヤレトコ」メインブログ

早速 cake/cake/libs/controller/components/security.php のソースを確認して検証してみました。
(続きを読む…)

[symfony] askeet 1日目

2

symfony を学習するために askeet を順番にやっていくことにしました。まずは1日目です。
(続きを読む…)

CakePHP 1.2 RC1 リリース!

0

Release: Pure Cake Power in RC1 | The Bakery, Everything CakePHP : Articles

CakePHP 1.2 RC1 がリリースされましたね。早速試してみたいと思います。

Finally – CakePHP 1.2 RC1 is out! ? Debuggable Ltdによると

800++ commits
100++ bug fixes
tons of security and feature additions

だそうです。

CakePHP Security コンポーネントのまとめ

1

CakePHP の Security コンポーネント の動作を調べたのでまとめておきます。
この Security コンポーネントをうまく使用すればクロスサイトリクエストフォージェリ(CSRF) を防ぐことができるでしょう。

トークンの使用

フォームにワンタイムトークンを実装する方法です。

コントローラの beforeFilter メソッドでトークンをチェックするアクションを指定
function beforeFilter() {
    $this->Security->requireAuth('login');
}
ビューのフォーム内にトークンを設定

<?php echo $html->formTag(); ?>
トークンが hidden 属性で生成される

トークンが一致しない場合

requireAuth で指定したアクションに POST でアクセスがあるとセションに保存したトークンとフォームから送られてきたトークンが一致するかチェックします。またそのほかにトークンの有効期間もチェックします。有効期間は CAKE_SECURITY の設定により違います。

CAKE_SECURITY 有効期間
high 10分
medium 100分
low 300分

トークンが一致しないと SecurityComponent の blackHole メソッドが実行されます。このメソッドでは
header('HTTP/1.0 404 Not Found');
を出力して exit します。(画面は空白)

任意の処理を実行したい場合は blackHoleCallback でコールバック関数を指定します。
設定できるのは同じコントローラ内のアクションのみになります。

function beforeFilter() {
    $this->Security->blackHoleCallback = "securityError";
    $this->Security->requireAuth('login');
}

function securityError() {
	die("security error!");
}
トークンチェックをするアクションを複数指定するときはカンマでつなげる

$this->requireAuth('login', 'delete');

特定のコントローラからのポストのみ許可する

$this->Security->allowedControllers = array("users");
これを指定するとたとえトークンが一致しても許可のないコントローラからのポストの場合は blackHole メソッドを実行します。

特定のアクションからのポストのみ許可する

$this->Security->allowedActions = array("action");
これを指定するとトークンが一致しても許可のないアクションからのポストの場合は blackHole メソッドを実行します。

ポストのみ受け付けるようにする

$this->requirePost('login');
これはトークンとは違い、POST のみ許可して GET でのアクセスを不可にします。
/users/login/ のような URL でのアクセスも GET なので不可になります。
POST の処理だけを実行したいようなアクションに使用します。

Go to Top