LINUX.ORG.RU

CSRF защита без серверной сессии

 ,


1

2

При любом запросе проверяем, что у клиента установлена Cookie csrf. Если не установлена - генерируем случайную и отправляем ему в ответе. Вообще этот токен сохраняем в запросе каким-то образом, чтобы он был доступен на время генерации HTML ответа.

При генерации HTML формы ставим hidden параметр с этим значением. JS может из cookie вытащить этот токен для AJAX запросов.

При любом не-GET запросе проверяем, что у нас есть CSRF токен в параметрах запроса и что он соответствует куке перед обработкой запроса.

Основная выгода - чтобы не хранить на сервере ничего, ассоциированного с клиентом. А то логин-форму сейчас модно размешать прямо на главной странице, а если защищать традиционным способом с хранением csrf в серверной сессии - придётся каждому анониму генерировать сессию, жалко оперативной памяти на это.

Вроде никаких явных проблем не вижу, но хочу перестраховаться. Или может есть другие способы.

★★★★★

Последнее исправление: Klymedy (всего исправлений: 1)

ЕМНИП, дефолтная джанга так и делает. Сессия по дефолту используется (не в курсе насчёт анонимов; в любом случае её можно перевести в подписанные кукизы), но CSRF от неё отдельно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.