0

CSRF 攻撃を回避するためにSecurityコンポーネントを使用しようとしていますが、formHelper を使用して postLink だけを使用してチケットを作成すると、次のように失敗します。

<?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $user['User']['id']),  array('class' => 'button mini'), __('Are you sure?', $user['User']['id'])); ?>

これが可能か、それとも CakePHP が formHelper の create() および end() メソッドを使用してこの機能を許可するかはわかりません。

CakePHP のドキュメントでは、formHelper の使用が必須であるとのみ述べられていますが、それ以上のことは指定されていません。

4

1 に答える 1

2

Security コンポーネントを有効にして、すべてのフォームに FormHelper メソッドを使用する場合、これについて心配する必要はありません。また、何も構成する必要はありません。それは箱から出して動作します。

CSRF の場合、次のオプションを使用できます。

property SecurityComponent::$csrfCheck
Whether to use CSRF protected forms. Set to false to disable CSRF protection on forms.

property SecurityComponent::$csrfExpires
The duration from when a CSRF token is created that it will expire on. Each form/page request will generate a new token that can only be submitted once unless it expires. Can be any value compatible with strtotime(). The default is +30 minutes.

property SecurityComponent::$csrfUseOnce
Controls whether or not CSRF tokens are use and burn. Set to false to not generate new tokens on each request. One token will be reused until it expires. This reduces the chances of users getting invalid requests because of token consumption. It has the side effect of making CSRF less secure, as tokens are reusable.

すべてをオンにすると、フォームの html に CSRF トークンが表示されます。必要に応じて追加のオプションを設定できますが、ほとんどそのままで機能します。

于 2012-10-04T12:15:36.443 に答える