balambasik
4.04.2017 - 10:15
Всем доброго дня.
Есть одностраничная админка с кучей кнопок. Обработчики кнопкок посылают ajax запросы на сервер. Отправляют, получают данные. Все как обычно.
Нужно организовать защиту от CSRF.
Реализовал так.
На стороне сервера, при отдаче страници в браузер, в теле html страници, генерится мета тег с CSRF токеном (случайный sha1 хэш), этот же хэш записывается юзеру в куку.
Потом любой ajax запрос, вместе со своими данными отправляет и этот хеш ( токен ).
А на стороне сервера я сверяю хеш который пришел с ajax запросом с хешем который в куке у юзера. Если совпадают то ок.
Вобщем вопрос. Можно ли так делать? Безопасно ли хранить токен в куке юзера? В манах пишут что нужно хранить в $_SESSION.
P.S. Кука с флагом "httponly" у javascript-а к ней доступа нет.
AllesKlar
4.04.2017 - 10:21
А в чем проблема хранить данные в сессии?
Хочется больше защиты, читай юзер-агента, версию ОСи, ip etc и сравнивай.
Если что-то не сошлось, включаешь paranoid-mode и выкидываешь вообще всех.
_____________
[продано копирайтерам]
balambasik
4.04.2017 - 10:28
После того как у меня на vds из за файлов сессий закончились iNode (скопилось более миллиона файлов, которые я потом еле удалил) связываться с сессиями как то неохота.
Цитата (balambasik @ 4.04.2017 - 10:28) |
После того как у меня на vds из за файлов сессий закончились iNode (скопилось более миллиона файлов, которые я потом еле удалил) связываться с сессиями как то неохота.
|
эм а хранить в редиске или мемкеше религия не позволяет?)
Invis1ble
4.04.2017 - 12:12
Цитата (balambasik @ 4.04.2017 - 10:15) |
Вобщем вопрос. Можно ли так делать? Безопасно ли хранить токен в куке юзера? |
Да, можно. Собственно, это классический способ.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.