@react_js

Страница 399 из 5115
Георгий
19.08.2016
16:50:15
https://telegram.me/JSlang

Damir
19.08.2016
16:51:34
Спасибо!

Konstantin
19.08.2016
16:59:27
чтобы когда пользователь заходил на апп уже залогиненый у него сразу инфа была кто он (например в выпадающем верхнем меню)
У тебя же spa, на весь цикл жизни приложения 1 запрос на сервер для получения данных пользователя

Зачем экономить на спичках?

Google
Pavel
19.08.2016
17:01:24
я имел в виду когда я открываю в другой вкладке

мне нужно инициализироваться же

сейчас у меня в хедере есть кнопки, если пользователь аутентифицировался то там логаут

если нет, то логин и регистрация

я возьму из localStorage начальное значение и подгружу актуальное сразу

Георгий
19.08.2016
17:03:57
просто тут проблемы начнутся, когда сессия пользователя протухнет

Pavel
19.08.2016
17:04:33
у него нету сессии

только куки

бекенд только рест сервис

Konstantin
19.08.2016
17:06:01
На беке права пользователя не чекаются чтоли?

Pavel
19.08.2016
17:06:56
на беке пользователь каждый раз авторизуется по токену

Георгий
19.08.2016
17:07:05
ок, если токен станет невалиден по какой-то причине (сброс пароля и т.п.), на фронте все станет плохо

Pavel
19.08.2016
17:07:08
он может редактировать только свою инфу

Google
Pavel
19.08.2016
17:07:35
но токен не зависит от пароля

это JWT токен

Георгий
19.08.2016
17:10:12
ок, еще проблема может быть такая, что в другом браузере/устройстве пользователь отредактировал личные данные, а в первом они остались старые. поэтому информацию пользователя конечно надо запрашивать при инициализации приложения

Pavel
19.08.2016
17:11:57
так тормозить будет, я сначала рисую старую и потом запрашиваю новую и обновляю

мне кажется это не критично

у кук мне кажется есть один плюс

допустим у меня 2 вкладки открыто

и во второй у меня уже другой токен

Георгий
19.08.2016
17:14:54
в теории это все интересно, но на практике куча лишнего кода и потенциальных багов. зачем усложнять себе жизнь и тем, кто будет потом это поддерживать? нормальное апи должно ответить в районе 50мс, этоу задержку очень сложно заметить, зато все сильно упростится. чем проще код, тем лучше

Pavel
19.08.2016
17:14:59
тогда если я в 1 вкладке буду слать запросы

у меня подставится автоматом правильный токен из кук

マイク
19.08.2016
17:15:47
Не переусложняй

Запрашивай и всё

Pavel
19.08.2016
17:16:50
это я про токен уже говорил)

если токен в куке хранить

а не в localStorage

то он с каждый запросом автоматом будет прикрепляться

Георгий
19.08.2016
17:20:21
и тем самым создавать csrf-уязвимость

Pavel
19.08.2016
17:29:08
хм, но ведь значение токена и так могут взять из заголовков

Google
Pavel
19.08.2016
17:29:14
в чем уязвимость?

Vadim
19.08.2016
17:49:08
куки доступны только клиенту, плюс с заголовками secure, httpOnly их никто не изменит и не прочитает

Pavel
19.08.2016
19:09:22
Вадим ты для таких целей куки или локалстраж используешь?

куки доступны только клиенту, плюс с заголовками secure, httpOnly их никто не изменит и не прочитает

Георгий
19.08.2016
19:10:59
в этом и суть атаки csrf, что для ее проведения не нужно читать кук https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0

Vadim
19.08.2016
19:14:09
так мы csrf токен все равно в куках храним

Георгий
19.08.2016
19:14:36
значит толку в нем — 0 ?

то есть, например, злоумышленник размещает у себя на сайте картинку у которой в src прописан адрес в rest-серверу с параметрами перевода денег на свой акк. полькователь открывает сайт, браузер автоматически отправлет запрос на этот адрес и все куки вместе с ним

Vadim
19.08.2016
19:17:46
Для таких операций сервисы выдают одноразовые токены

Георгий
19.08.2016
19:19:29
например, в django rest csrf-токен действительно отправляется в куке, но только при запросе к серверу этот токен должен быть продублирован в заголовке X-CSRFToken чтобы запрос выполнился. сервер просто проверяет, соотвествие токенов

Vadim
19.08.2016
19:19:30
POST запрос не сделаешь картинкой

Георгий
19.08.2016
19:19:59
можно сделать скрытую form с кнопкой "смотреть котиков"

Vadim
19.08.2016
19:20:33
это режется проверкой откуда запрос пришел

Георгий
19.08.2016
19:22:15
если речь идет о rest-сервере, у него может быть неограниченное число клиентов с разными хостами, поэтому таких проверок по умолчинию нигде нет. хотя прикрутить конечно можно

Vadim
19.08.2016
19:23:15
у таких серверов почти всегда есть white-list

Георгий
19.08.2016
19:26:21
да, конечно это все можно решить, обойти, настроить вайт-листы и написать кучу кода, но зачем на это тратить время, когда можно просто не хранить токен в куке?

Vadim
19.08.2016
19:37:46
если хранить токен в сессии, то прийдется хранить сессионные куки))

Георгий
19.08.2016
19:38:37
можно просто хранить его в localStorage

Pavel
19.08.2016
19:50:25
Спасибо Георгий, убедил :)

Evgeny
19.08.2016
22:18:26
https://pbs.twimg.com/media/CqOwE9EWgAA9rp7.jpg:large

Google
Alex
19.08.2016
22:37:48
Impossibru

Denis
20.08.2016
03:28:16
Парни, открыл HTML гитхаба и там в конце такие строки: <script crossorigin="anonymous" integrity="sha256-ZVMF...0zr4=" src="https://assets-cdn.github.com/assets/frameworks-655305f0453f424f8dab87dc1ae0e385e5982f72f7e2ce14eb1a9c229174cebe.js"></script> <script async="async" crossorigin="anonymous" integrity="sha256-WyYTflB...tR0=" src="https://assets-cdn.github.com/assets/github-5b26137e505956beabe3500d02fe0cbfcfc914b7054613b4b38812c765d5b51d.js"></script> Что происходит? Что это за crossorigin? Что за integrity? Зачем?

Andrey
20.08.2016
03:54:49
https://developer.mozilla.org/ru/docs/Web/HTML/Element/script

Дмитрий
20.08.2016
04:15:23
Парни, открыл HTML гитхаба и там в конце такие строки: <script crossorigin="anonymous" integrity="sha256-ZVMF...0zr4=" src="https://assets-cdn.github.com/assets/frameworks-655305f0453f424f8dab87dc1ae0e385e5982f72f7e2ce14eb1a9c229174cebe.js"></script> <script async="async" crossorigin="anonymous" integrity="sha256-WyYTflB...tR0=" src="https://assets-cdn.github.com/assets/github-5b26137e505956beabe3500d02fe0cbfcfc914b7054613b4b38812c765d5b51d.js"></script> Что происходит? Что это за crossorigin? Что за integrity? Зачем?
integrity - метод для безопасной загрузки данных с cdn, чтобы третим лицам нельзя было подменить запрашиваемый файл, Crossorigin = anonymous - это указание на то, что надо делать CORS запрос без указания данных пользователя https://www.srihash.org/

Vladimir
20.08.2016
10:35:52
Котаны, а расскажите, как вы пользуетесь вебпаком в изоморфных приложениях? Импортите ли цсс из модулей? Используете в модулях относительные пути или резолв? Компилите ли тесты вебпаком? Компилите ли экпресс-аппу вебпаком?

Admin
ERROR: S client not available

Vladimir
20.08.2016
10:59:03
а некритикалы отдельно лежат?

Vladimir
20.08.2016
11:34:08
например, чтобы работали резолвы внутри импортов, и импорты цсс и файлов нормально воспринимались

Konstantin
20.08.2016
11:35:42
Или все таки стили нужно инлайнить?

Вот как при изомопрфе автоматом определять critical css без фантома и запуска сервера было бы интересно узнать

Vladimir
20.08.2016
11:48:16
ручками, наверное

https://github.com/kriasoft/isomorphic-style-loader/ или так...

Denis
20.08.2016
11:57:20
In the second half of 2017, the Chrome Web Store will no longer show Chrome apps on Windows, Mac, and Linux, but will continue to surface extensions and themes. In early 2018, users on these platforms will no longer be able to load Chrome apps. http://blog.chromium.org/2016/08/from-chrome-apps-to-web.html

Vladimir
20.08.2016
11:58:10
о, еще вопрос - у вас для сервера и клиента два разных конфига или один с разными ентри?

или еще как?

Google
Konstantin
20.08.2016
12:03:57
В смысле? вебпаковских?

Vladimir
20.08.2016
12:07:00
да

Viacheslav
20.08.2016
12:08:08
два разных конфига

для серверного нужны дополнительные настройки

городить if-ы не вариант

Lupsick
20.08.2016
12:19:23
а зачем иметь вебпак для сервера?

Vladimir
20.08.2016
12:31:17
затем, что в изоморфном приложении нужно получить реактовский компонент, чтобы его отрендерить. а в нем могут быть штуки, которые компилятся вебпаком

типа реквайра стилей и картинок

два разных конфига
а есть какой-нить воркэраунд, чтобы вотчер не компилил оба бандла при изменениях, или от этого не уйдешь?

Viacheslav
20.08.2016
12:33:07
а почему он не должен компилить оба?

сервер тоже должен быть консистентным

Vladimir
20.08.2016
12:43:36
а почему он не должен компилить оба?
Время сэкономить, бандлы-то на 90% похожи

Viacheslav
20.08.2016
12:44:27
так он и не компилирует все, там же инкрементальная сборк

Vlad
20.08.2016
13:23:42
Вот как при изомопрфе автоматом определять critical css без фантома и запуска сервера было бы интересно узнать
не оч понятно, как это "изомопрфе и без запуска сервера". в контексте веб-приложения изомформное же как раз и подразумевает, что твой апп отрендериться на сервере. а к вопросу о critcal path – из решений мне нравится подход jss – https://github.com/cssinjs/jss/blob/master/docs/ssr.md который по умолчанию подразумевает рендеринг только необходимых стилей

Konstantin
20.08.2016
13:45:07
Это значит что на сервере стили мы уже не трогаем. Все собрано заранее вебпаком

Lupsick
20.08.2016
14:42:45
https://twitter.com/left_pad/status/765915185479581696

https://github.com/airbnb/react-dates

Konstantin
20.08.2016
15:19:29
Да нормальный календарик для тревела)

Страница 399 из 5115