Question

J'essaie d'utiliser le composant STRAND afin d'éviter les attaques CSRF et si j'utilise le formhelper pour créer le billet à l'aide d'un postlink, comme celui-ci échoue:

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

Je ne suis pas sûr que cela soit possible ou CakePHP autorise simplement cette fonctionnalité à l'aide des méthodes Créer () et Fin () de formhelper.

Documentation CakePHP ne dit que c'estest obligatoire d'utiliser le formhelper mais cela ne spécifie pas beaucoup plus.

Était-ce utile?

La solution

Lorsque vous avez le composant de sécurité activé et que vous utilisez les méthodes de formhelper pour tous les formulaires, vous n'avez pas à vous soucier de cela.Vous n'avez pas non plus à configurer quoi que ce soit.Cela fonctionne hors de la boîte.

Pour CSRF, vous pouvez utiliser les options suivantes:

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.

Si vous avez tout, vous devez voir les jetons CSRF dans le HTML du formulaire.Vous pouvez définir toutes les options supplémentaires que vous préférez, mais cela fonctionnera à peu près de la boîte pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top