Предотвращение CSRF? - PullRequest
       1

Предотвращение CSRF?

5 голосов
/ 03 января 2012

Я уже видел некоторые вопросы отсюда (stackoverflow) и ЭТО сообщение, но у меня все еще есть некоторые вопросы ...

  1. Используя скрытое значение в форме сообщения и проверяйте его, когда сообщение достигает сервера.

    • Скрытое значение может быть легко скопировано и отправлено точно так же, как реальное, «трудно угадать» (например, md5)нет помощи.(верно?)
  2. Установка файла cookie при достижении формы и отправке значения файла cookie в качестве скрытого значения.

    • Вы можете легко изменитьзначение cookie или отправьте пользовательский cookie точно так же, как настоящий, используя то же самое реальное скрытое значение.(верно?)
  3. При использовании «тайм-аута» значения POST не могут быть достигнуты слишком поздно.ошибка при попытке настроить все со скрытым значением.Если ты быстр, это сработает.(верно?)

Я хочу быть защищен насчет CSRF ... но как именно я это делаю?

Ответы [ 2 ]

7 голосов
/ 03 января 2012

Я нашел самый простой способ предотвратить проблемы с CSRF:

  1. На стороне сервера назначьте клиенту файл cookie HttpOnly со случайным (не угаданным)токен

  2. Поместите скрытое поле в форму со значением cookie

  3. При отправке формы убедитесь, что значение скрытого поля равно значению cookie (на стороне сервера вещей)

0 голосов
/ 08 января 2017

Если вы сделаете следующие изменения, то я думаю, что вы в безопасности

  • Запрещается обновлять данные с помощью GET (или даже лучше POST) (поскольку оба могут использоваться через формы HTML)
  • отключить CORS на вашем сервере (или, по крайней мере, на конечных точках, которые являются критическими и / или вносят изменения в данные)
  • разрешить API только для JSON (т.е. принимать входные данные только через JSON как минимум на критических конечных точках)

Просто добавьте к вышесказанному: не используйте переопределения методов и не поддерживайте старые браузеры.

...