0

我正在尝试使用安全组件来避免 CSRF 攻击,如果我使用 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 回答