Roman
это же анти-безопасность
Roman
а так если он мне обрубил сессии, то и себе обрубил, а пароля не знает - вот и приехал голубчик
R
Приветы, чем пользуетесь для загрузки одного или больше картинок, файлов, документов etc ?
Roman
закрывать все сессии намного безопаснее и к тому-же это можно реализовать на JWT'ах, у каждого токена есть registration datetime. При закрытии всех сессий на сервера ставим флаг "все токены пользователя X зарегистрированные после datetime Y не принимать" и инвалидируем refresh токен.. и всё, никаких бд сессий
Yaroslav 🇺🇦
У меня кусок меседжей оборвало? Не могу понять где начинается диалог про сессии
Anonymous
Там, где идёт разговор про функцию обрубить сессии
Roman
Слухайте, а в чём смысл функции "отключить все сессии кроме данной"? Если мой мобильный девайс попал в руки злоумышленнику, то он сможет отрубить все мои сессии, затем изменить пароль и не дать мне перезайти... не лучше ли отрубать все сессии включая актуальную?
Roman
но про пароль я добавил:
Roman
хотя нет, изменить пароль он не сможет ибо актуального пароля не знает, но суть та-же, почему он сможет обрубить все мои сессии а его сессия останется..
Anonymous
Одного не пойму
Anonymous
Как ты собираешься инвалидировать сессии
Roman
закрывать все сессии намного безопаснее и к тому-же это можно реализовать на JWT'ах, у каждого токена есть registration datetime. При закрытии всех сессий на сервера ставим флаг "все токены пользователя X зарегистрированные после datetime Y не принимать" и инвалидируем refresh токен.. и всё, никаких бд сессий
Anonymous
То есть тебе надо где-то хранить пользователей, доступ которым ты запрещаешь
Anonymous
На словах ты Лев Толстой, но хранить то тебе "инвалидов" надо
Roman
нужен лишь один флаг на сервере, это 24 байт {UserId -> SessInvalidationDatetime}
Roman
Anonymous
Лол
Roman
только один флаг
Anonymous
Но при этом ты добавляешь запрос к бд
Anonymous
Что флаг
Anonymous
Jwt подразумевает отказ от постоянных запросов к бд
Roman
к локальной бд которую кэшировать можно без провлем, т.е. effectively это запрос в ОЗУ
Anonymous
Ой все
Anonymous
Начались костыли
Roman
ты хоть в тему въехал?))
Anonymous
Смысл тогда юзать jwt
Anonymous
А что я не по теме говорю?
Roman
Смысл тогда юзать jwt
чтоб не требовался Shared Cache... сессии они тем и плохи что одна сущность в кластере отвечает за сессии и horizontal scalability усложняется.. а инвалидировать local cache for remote resource это сложнее чем:
на сервере хранить флаг, ибо это не remote resource
Roman
Anonymous
Ну вот заддосить тебя после такого инвалидами очень просто например
Roman
это как это?
Anonymous
Ну голову включи
Ruslan
Привет, покажите плс, как вы компоненты со слотами тестируете?
Anonymous
Такое чувство, что у тебя ограничение на сервере в одного пользователя
Roman
флаг указывает лишь токены какого пользователя с какого времени не принимать
Roman
Anonymous
Ну раз ты говоришь про одного юзера
Roman
даже 10кк пользователей если вдруг в момент все свои сесии завершат - это 200 мб
Nikita
хм, ребята, а created разве может быть async функцией?
Anonymous
И сколько будет длиться эта атака?
Anonymous
Максимум 10 минут
Nikita
хуки могут быть промиссами?
Nikita
да у себя в проекте увидел async fuction created()
Anonymous
Кек
Nikita
я почему-то избегал использовать async функции в хуках
Anonymous
Yaroslav 🇺🇦
Ты же всё равно будешь обращаться в базу каждый раз. Типо а не протухли ли токены.
Много серверов, вспоминаем CAP теорему в части Consistency и Partition tolerance
Roman
Sasha 💲🌚✖️ критика это именно то чего я и искал, но она то обоснованная должна быть
Anonymous
Roman
Yaroslav 🇺🇦
Много микриков, все микрики хранят в себе состояние. Синхронизировать как?
Anonymous
Тебе задали вопрос про масштабируемость
Anonymous
Как называлась та штука наподобие общей шины
Anonymous
Забыл
Roman
Максим
Anonymous
Лол
Anonymous
Да, поставить vuex на серваки
Anonymous
И гонять по ним данные
Yaroslav 🇺🇦
Синхронить сервера это проблема.
Anonymous
Ахахахах
Anonymous
Максим
В следующий раз буду перечитывать историю, прежде чем написать 😆
Roman
Синхронить сервера это проблема.
ну как я уже говорил, либо центральный сервис сессий
- single point of failure
- scales vertically
- higher round-trip time
либо локальный флаг инвалидации сессий
- distributed synchronisation problem
- scales horizontally
- negligible round-trip time
Anonymous
Давайте уж полностью на английском говорить, а то сейчас язык сломаю
Roman
однако если использовать WSS вместо HTTPS подключений то round-trip time неважно, ибо аутентификация происходит лишь раз при создании связи в то время как с HTTPS она происходит при каждом запросе
Yaroslav 🇺🇦
Ну и возвращаемся к ситуации. Которая звучит примерно так:
Если у тебя маленькое приложение и сколько-то там юзеров. То храни хоть по фазе луны.
Если микросервисов много, то дабы не застрять в болоте синхронизаций валидации и боязни получить разрыв (а ведь до этого не было ни единого разрыва!), то все велосипеды уже придуманы до нас.
Roman
в таком случае WSS + Sessions Service
Yaroslav 🇺🇦
можно даже и без вебсокетов, преждевременная оптимизация это глобальная проблема наряду с инвалидацией кеша и неправильными названиями переменных
Roman
лучше через один WSS канал и API и notifications пушать и аутентифицироваться лишь раз, чем API по HTTPS а notifications по WSS и в каждом HTTPS запросе по разу аутентифицировать
Yaroslav 🇺🇦
Тоесть я правильно понимаю, что ты и апи хочешь гонять по сокетам?
Roman