Для защиты форм, когда я выдаю токен? - PullRequest
3 голосов
/ 03 июня 2010

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

Когда я должен выпустить новый токен? В форме? На странице загрузки, где есть какая-либо форма? За сессию? Я могу сделать ее недействительной, как только форма успешно отправлена, но мне интересно, когда ее нужно создать.

Я спрашиваю, как если бы я выдавал его для каждой формы или для каждой страницы, не рискую ли я, что дублирующее значение токена перезаписывает существующий (действительный) токен, если пользователь открывает отдельное окно, но отправляет первую форму (с перезаписанной теперь значение)

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Самый простой способ предотвратить проблемы с параллелизмом - генерировать его только один раз за вход в систему. Вероятность того, что злоумышленник "угадает" ваш CSRF, примерно такой же (или ниже), что и у него кража вашего PHPSESSID. Вы также можете восстановить его всякий раз, когда уровень доступа пользователя изменяется, например, после того, как они меняют свой пароль или что-то в этом роде.

Если вы хотите быть очень внимательным, вы можете сгенерировать и сохранить массив токенов, по одному для каждой формы на веб-сайте. Но если они могут украсть токен CSRF, они могли бы просто украсть идентификатор сессии и нанести реальный урон.

0 голосов
/ 07 ноября 2010
  • Если вы используете один токен на сессию, тогда вам нужна техника для проверки дублировать отправленные формы (когда пользователь обновите страницу или нажмите назад кнопка).
  • Если использовать его для формы, тогда, если пользователь открывает несколько страниц, то только последний форма будет работать.
  • Я бы предпочел использовать массив сгенерированные токены за сеанс и когда токен передан, он должен быть удален. Я читал, что этот подход может быть беспокойство, если у вас есть большой объем трафик сайта.

Я не уверен, читали ли вы эту статью раньше, но я думаю, что это отличный ресурс о безопасности CSRF http://shiflett.org/articles/cross-site-request-forgeries

...