CSRF-атака Symfony обнаруживается каждый раз, когда я отправляю форму - PullRequest
0 голосов
/ 28 октября 2010

Форма входа работает нормально, но любая другая форма, которую я отправляю (такие как редактирование или создание данных), получает ошибку, обнаруженную атакой CSRF Я пытался очистить кэш Symfony и браузера, удалил куки, пробовал несколько браузеров и несколько компьютеров.

Что может быть причиной этого? Когда я отключаю защиту CSRF, она работает нормально.

Ответы [ 4 ]

4 голосов
/ 29 октября 2010

Каждый раз, когда я получал эту ошибку в прошлом, это было потому, что я забыл отобразить скрытые теги в моей форме.Не забудьте добавить эту строку:

<?php echo $form->renderHiddenFields() ?>
2 голосов
/ 28 октября 2010

Сложно ответить на это предоставленной информацией. Вот две возможности:

  • Вы уверены, что токен CSRF действительно отправлен?
  • Обрабатывает ли одна и та же форма оба значения? Токены CSRF в Symfony генерируются из трех вещей: секрет CSRF (устанавливается в app.yml), session_id и класс формы. Меняется ли одна из этих трех вещей?
0 голосов
/ 31 октября 2010

Чтобы проверить это, попробуйте запустить Fiddler во время выполнения POST и проверить полезную нагрузку для% 5B_csrf_token% 5D = {whateveryourtokenis}.

0 голосов
/ 28 октября 2010

Убедитесь, что ваша форма в вашем шаблоне включает тег CSRF и отправляет его с формой:

<?php echo $form['_csrf_token']->render(); ?>

Я пойду на конечность и предположу, что форма входа работает, потому что вы простоиспользуя готовый код SfGuard, тогда как в ваших собственных формах вы пропустили тег из формы ....?

...