Когда использовать / не использовать protect_from_forgery
Я знаю, как включить / отключить проверку подлинности токена, но не знаю, когда имеет смысл ее включить.
Например, в приложении rails я понял следующее. пожалуйста, дайте мне знать, если я ошибаюсь
веб-сайт:
- общедоступные страницы (не заблокированные) должны включать проверку токена подлинности
- страницы аутентификации (вход, регистрация, утерянный пароль...) должны включать проверку токена аутентификации
- частные страницы (вошедшие в систему) не должны включать проверку подлинности токена
Api:
- public api (unlogged, доступ JSON) должен включить проверку токена подлинности
- API-интерфейс аутентификации (вход, регистрация, потерянный пароль..., доступ JSON) должен включать проверку токена аутентификации
- частный API (вход в систему, доступ JSON) не нужно включать проверку токена подлинности
1 ответ
Неправильно, что частные страницы не должны включать защиту CSRF. Личные страницы, где пользователь проходит проверку подлинности, являются уязвимыми для CSRF. В этой атаке кто-то, кто вошел в систему, обманут (например, щелкнув ссылку в электронном письме), чтобы предпринять действия, которые он не намеревался - что принимает сайт, потому что это происходит от зарегистрированного пользователя с действительным сессия. protect_from_forgery
предотвращает это, обеспечиваяGET
запросы могут быть инициированы только с самого сайта пользователем, который знает о действии, которое они предпринимают.