
Stepan
31.05.2018
21:59:39
Csrf с локалсторейджем не получится

me
31.05.2018
21:59:48
Там нет твоей сессии в куках

Stepan
31.05.2018
21:59:52
Т.к. он не бегает с каждым запросом

Artyom
31.05.2018
22:00:22
https://learn.javascript.ru/csrf

Google

Stepan
31.05.2018
22:00:57
Но если ты хранишь в обычной куке, а потом достаешь в js, и кладёшь ручками в запрос, то csrf тоже не проканает

Artyom
31.05.2018
22:01:11

Stepan
31.05.2018
22:01:24
ПОЧЕМУ?
Потому что сервер будет из тела запроса брать токен
А не из куки
Кука просто как хранилище
У нас токен в куке потому что ssr и надо чтобы сервер рендерил то же самое

Artyom
31.05.2018
22:02:38
И что мешает стороннему скрипту это симитировать?

Stepan
31.05.2018
22:03:01
При csrf атакующий не получает никаких данных
Он просто делает запрос, а твой сервак берет куку и авторизирует
При xss же чувак сможет получить именно value токена
Ну и тогда, конечно, вам пизда

Alan
31.05.2018
22:04:42
когда ты шлешь запрос к бекенду у тебя вместе с ним отправляется кука, локалсторадж никуда не отправляется. поэтому при csrf неожиданно для тебя могут твоими руками послать запрос к бекенду с которым убежит и твоя кука)

Google

Andrey
31.05.2018
22:05:02

me
31.05.2018
22:05:14
Абсолютно

Alan
31.05.2018
22:05:18
но от этого можно защититься, а вот от доступа сторонними скриптами к токену в локалсторадже не получится)

Stepan
31.05.2018
22:05:24

me
31.05.2018
22:05:33
Лучше хранить в хиден полях форм
Для сабмита
Так owasp советует делать
Но это всегда подходит

Stepan
31.05.2018
22:06:09

me
31.05.2018
22:06:11
Поэтому это нормально хранить в локалсторадже

Alan
31.05.2018
22:06:23
csrf токен имеется ввиду наверно )

me
31.05.2018
22:06:26
Много серьезеых ресурсов так делает

Alan
31.05.2018
22:06:28
его хоть где храни )

Artyom
31.05.2018
22:06:35

me
31.05.2018
22:06:36
Именно

Alan
31.05.2018
22:06:47
при csrf ?

Stepan
31.05.2018
22:06:52

me
31.05.2018
22:06:57
Скрипт надо исполнить на станице твоего домена
Сначала надо xss успешно провернуть
Для такого

Google

Alan
31.05.2018
22:07:29

me
31.05.2018
22:07:36
Для этого реакт экоанирует все строки
Пользовательсклго ввода

Alan
31.05.2018
22:08:07

me
31.05.2018
22:08:11
Ващм где хочет там и храни
Если ты банк то под каждыц запрос выпускай токен
Одноразовый
И гоняй их туда сюда
Не храня вообще

Artyom
31.05.2018
22:09:14
В общем надо токен хранить в куке, но AES его ключем, который рандомно бекенд при инициализации прислал. При этом ключ, соответственно, держать в замыкании и использовать каждый раз при необходимости своих запросов.
Все
Это ж реально важно

Alan
31.05.2018
22:10:05
хороший аргумент да)

Stepan
31.05.2018
22:10:47
Но с этим геморно

Artyom
31.05.2018
22:11:25
заметку*

Stepan
31.05.2018
22:11:49
Но с этим геморно
Потому что оно будет появляться только при клиентском рендеринге, как бы "прыгая"

Artyom
31.05.2018
22:12:15

Alan
31.05.2018
22:13:30

Google

Stepan
31.05.2018
22:13:31
Ну типа сервер отрендерил без рекламного предложения, которое мы показываем только юзерам категории Х, а клиент уже только в componentDidMount полез и срендерил его

Alan
31.05.2018
22:13:48
redux-persist без дерганий делает

Stepan
31.05.2018
22:14:02
И получается сайт загрузился, а потом только появился баннер
А не сразу страница с баннером
Ну да ладно, это не сильно важно

Alan
31.05.2018
22:15:07
ну мб если кому то это очень существенно для задачи

Artyom
31.05.2018
22:15:35
Так, а для XSS и CSRF разницы в куках и локалсторадже нет?

Stepan
31.05.2018
22:16:39
Как, например, с http only кукой

Admin
ERROR: S client not available

Artyom
31.05.2018
22:17:03
Понял
Выходит HttpOnly не панацея
А вы говорили

Stepan
31.05.2018
22:17:39
Да, она подвергает csrf-атакам
Но они менее страшные, чем xss

Max
31.05.2018
22:17:56
Выбирая куки или локалсторадж нужно не забыть про один момент - реализовать авторизацию при загрузке гигабайтных файлов через локалсторадж не получится так что тут альтернатив кукам нет

Stepan
31.05.2018
22:18:51
Так что тут палка о двух концах

Artyom
31.05.2018
22:19:05

Google

Artyom
31.05.2018
22:19:32

Alan
31.05.2018
22:20:11

Stepan
31.05.2018
22:20:23
Http only кука - способ не иметь такой возможности
Но она подвергает csrf-атакам
Потому что вы ВЫНУЖДЕНЫ авторизовать через заголовок Cookies

Artyom
31.05.2018
22:21:46
Ок

Max
31.05.2018
22:21:50
пчму?
загрузить файлы можно двумя способами - через установку хедера Content-Disposition или через загрузку блобов через xhr/websoket-ы но только гигабайтные файлы через xhr/websocketы передать не получится а через Content-Disposition авторизироваться можно только через куки

Artyom
31.05.2018
22:21:55
Спасибо

Stepan
31.05.2018
22:22:23

Alan
31.05.2018
22:22:28
а это про аплоад))

Artyom
31.05.2018
22:23:58
А, не, будет
уффф

Stepan
31.05.2018
22:25:06
Просто зашифровав куку один раз неким ключом, расшифровать ты его сможешь только с тем же ключом

Abu
31.05.2018
22:25:08
так, где все-таки хранить токен то? к чему пришли?

Stepan
31.05.2018
22:25:22

Artyom
31.05.2018
22:25:55
Не вижу проблемы