Смущение в отношении стратегий защиты от CSRF - PullRequest
0 голосов
/ 07 декабря 2018

Я тестирую веб-приложение.CSRF применяется и отправляется в файлах cookie и заголовке, но не в форме скрытого ввода.Маркер csrf не изменяется для каждого запроса, но изменяется во время сеанса.Как часто следует менять токен csrf?Должно ли оно меняться за сеанс или за запрос?клиент или сервер должен установить токен csrf?Какова лучшая стратегия применения защиты CSRF?двойной файл cookie?Triple Submit Cookie?или любая другая новая стратегия?

1 Ответ

0 голосов
/ 07 декабря 2018

Я просто попытаюсь ответить на ваши вопросы один за другим здесь.

Как часто следует менять токен CSRF?

Вы можете изменить свой CSRFтокен один раз за сеанс.Изменение его один раз за запрос не дает никаких реальных преимуществ в плане безопасности и, во всяком случае, служит лишь простым способом растрачивать ресурсы и ограничивать удобство использования.Например, пользователь не сможет нажать кнопку «назад», поскольку у него будет устаревший токен CSRF, или если он попытается повторно отправить форму с новыми значениями (например, после ошибки проверки), он может не отправлять.

Должно ли оно меняться за сеанс или за запрос?

Как обсуждалось, оно должно меняться за сеанс.Единственный раз, когда пользователю должен быть предоставлен новый токен для каждого запроса, это вход в систему.Это необходимо для предотвращения атаки с фиксацией сеанса, приводящей к возможности атаки CSRF.

Например: Злоумышленник получает доступ к сайту и генерирует новый сеанс.Они берут идентификатор сеанса и внедряют его в браузер жертвы (например, посредством записи cookie-файлов из уязвимого соседнего домена или с помощью другой уязвимости, такой как URL-адреса jsessionid), а также внедряют токен CSRF в форму в браузере жертвы.Они ждут, когда жертва войдет в систему с этой формой, а затем с помощью другой публикации формы заставят жертву выполнить действие с еще действующим токеном CSRF.

Чтобы предотвратить это, аннулируйте токен CSRF и выполните командуновый в местах (например, при входе в систему), где вы уже делаете то же самое с идентификатором сеанса, чтобы предотвратить атаки с фиксацией сеанса.

Должен ли клиент или сервер устанавливать токен CSRF?

Сервер - всегда на сервере! Вы хотите сгенерировать токен из надежного источника в соответствии с рекомендациями OWASP.Это гарантирует, что вы точно знаете, где генерируется токен, и ограничивает поверхность атаки, поскольку злоумышленник не может контролировать то, что происходит на сервере.

Какова лучшая стратегия применения защиты от CSRF?

Я думаю, что CSRF - это очень глубокая тема, и ее нельзя подвести итог всего лишь несколькими словами.Это где небольшое исследование и чтение могут иметь большое значение.Я бы порекомендовал вам взглянуть на OWASP CSRF Prevention Chat Sheet .

...