Когда использовать / не использовать protect_from_forgery

Я знаю, как включить / отключить проверку подлинности токена, но не знаю, когда имеет смысл ее включить.

Например, в приложении rails я понял следующее. пожалуйста, дайте мне знать, если я ошибаюсь

веб-сайт:

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

Api:

  • public api (unlogged, доступ JSON) должен включить проверку токена подлинности
  • API-интерфейс аутентификации (вход, регистрация, потерянный пароль..., доступ JSON) должен включать проверку токена аутентификации
  • частный API (вход в систему, доступ JSON) не нужно включать проверку токена подлинности

1 ответ

Решение

Неправильно, что частные страницы не должны включать защиту CSRF. Личные страницы, где пользователь проходит проверку подлинности, являются уязвимыми для CSRF. В этой атаке кто-то, кто вошел в систему, обманут (например, щелкнув ссылку в электронном письме), чтобы предпринять действия, которые он не намеревался - что принимает сайт, потому что это происходит от зарегистрированного пользователя с действительным сессия. protect_from_forgery предотвращает это, обеспечиваяGET запросы могут быть инициированы только с самого сайта пользователем, который знает о действии, которое они предпринимают.

Другие вопросы по тегам