Я знаю, что для защиты веб-приложений от Cross Site Request Forgery единственным защищенным методом является реализация токена CSRF. Мой вопрос: нельзя ли использовать токен CSRF для отслеживания сеансов? Почему мы должны реализовывать другой идентификатор сеанса для отслеживания сеансов?
Какова цель использования идентификатора сеанса, когда защита csrf уже реализована?
Ответ 1
токен CSRF - это значение, которое должно генерироваться случайным образом и ассоциироваться с сеансом (пользователем) в КАЖДОМ GET, который показывает форму для предотвращения ложного POST. Этот ложный POST поступает из пользовательского браузера, поэтому для аутентификации POST вам потребуется сеанс с токеном, хранящимся в памяти сервера, для сравнения, если токен, который поставляется с POST, является тем же самым, что и в сеансе пользователя.
Кроме того, веб-приложение shuold должно идентифицировать пользователей в токенах GET и CSRF только в POST.
Сессия должна быть статичной для идентификации пользователя во времени и нескольких запросов из-за отключенного характера HTTP. CSRF изменяется в каждом GET, он не может использоваться как сеанс.
С другой стороны. Какой сервер должен делать с вашей идеей? Создайте новый сеанс каждый GET и скопируйте все предыдущие данные сеанса на новый сеанс? Это безумие.
Взгляните на этот pdf в Университет штата Монтана. Это помогает мне понять CSRF.