Size: a a a

JavaScript fwdays

2020 April 14

AI

Andrew Ivanov in JavaScript fwdays
Timur Shemsedinov
Контейнеры ничего не решают, они не делают приложения масштабируемыми, положите СУБД в k8s, он не станет от этого мультимастером. K8s это не про масштабирование, а про управление инфраструктурой
Субд вспоминать в контексте кубера это красивая манипуляция. Потому как StatefulSet ресурсы это как раз то что сложнее всего поддается масштабированию. Бывают и другие задачи.
источник
2020 April 15

V

Viktor in JavaScript fwdays
@tshemsedinov, подскажи. Смотрю, что стартет ките сказано "Metaserverless cloud, an open source cloud platform based on Metarhia technology stack and Node.js.". А есть уже где глянуть исходники клауда или еще пока в закрытой разработке?
источник

AL

Andrey Listochkin in JavaScript fwdays
Alex
А в bcrypt есть критические уязвимости?

Ps я не ожидаю что пароли будут взламывать фермой суперкомпьютеров.
я вот прямо сейчас использую bcrypt в проде. Выбирал между ним и scrypt, и просто для bcrypt модуль в npm с приятным API
источник

V

Viktor in JavaScript fwdays
Andrey Listochkin
я вот прямо сейчас использую bcrypt в проде. Выбирал между ним и scrypt, и просто для bcrypt модуль в npm с приятным API
Андрей, привет. Сейчас для scrypt даже модуль с npm не нужен, есть в crypto https://nodejs.org/docs/latest-v12.x/api/crypto.html#crypto_crypto_scrypt_password_salt_keylen_options_callback
источник

V

Viktor in JavaScript fwdays
Но у нас тоже еще есть проекты в проде с bcrypt)
источник

AL

Andrey Listochkin in JavaScript fwdays
Вот ты знаешь, мне чем bcrypt@npm нравится, так это тем, что он простой как пробка:
const salt = await bcrypt.genSalt();
const passwordHash = await bcrypt.hash(password, salt);

//
isPasswordCorrect = await bcrypt.compare(password, passwordHash)

прикольно, что оно и пароль, и соль кладет в одну стрингу, которую потом в один столбец базы записываешь. С другими либо соль и пароль хранить отдельно, либо клеить самому, а мне влом 😄
источник

V

Viktor in JavaScript fwdays
Andrey Listochkin
Вот ты знаешь, мне чем bcrypt@npm нравится, так это тем, что он простой как пробка:
const salt = await bcrypt.genSalt();
const passwordHash = await bcrypt.hash(password, salt);

//
isPasswordCorrect = await bcrypt.compare(password, passwordHash)

прикольно, что оно и пароль, и соль кладет в одну стрингу, которую потом в один столбец базы записываешь. С другими либо соль и пароль хранить отдельно, либо клеить самому, а мне влом 😄
Согласен. Для меня тоже удобный API часто решает, но тут мы решили все-таки чуть больше ручной работы с scrypt, но немного надеждней (еще хуже брутфорсится на GPU), да и стандартный модуль - это греет :)
источник

V

Viktor in JavaScript fwdays
Но в любом случае для секьюрити библиотек API, который минимизирует вероятность ошибок  это мегаважно. Часто можно взять хорошую либу, но ввиду low level API можно себе в ногу выстрелить. Такое тоже есть
источник

AL

Andrey Listochkin in JavaScript fwdays
Это да, я согласен. Мб когда-то заюзаю его.
источник

КВ

Кукурузный Воришка in JavaScript fwdays
Andrey Listochkin
Вот ты знаешь, мне чем bcrypt@npm нравится, так это тем, что он простой как пробка:
const salt = await bcrypt.genSalt();
const passwordHash = await bcrypt.hash(password, salt);

//
isPasswordCorrect = await bcrypt.compare(password, passwordHash)

прикольно, что оно и пароль, и соль кладет в одну стрингу, которую потом в один столбец базы записываешь. С другими либо соль и пароль хранить отдельно, либо клеить самому, а мне влом 😄
Но какой смысл в соли, если она записана в одной строке с хешем? Я думал её нужно хранить отдельно, чтоб в случае слива базы без неё не восстановили пароли. 🙄
источник

AL

Andrey Listochkin in JavaScript fwdays
Кукурузный Воришка
Но какой смысл в соли, если она записана в одной строке с хешем? Я думал её нужно хранить отдельно, чтоб в случае слива базы без неё не восстановили пароли. 🙄
“Отдельно” - это где? В отделбной базе на другом сервере? Так по факту не делают. Соль кладут рядом в соседнюю колонку в ту же таблицу. Когда база утекакет, утекают хеши с солью.

Смысл соли в том, что у каждого пароля она своя, и ты не можешь 100500 паролей сразу разшифровать из-за этого.
источник

AL

Andrey Listochkin in JavaScript fwdays
Есть расширение этой идеи - соль + перец. Соль хранится рядом с паролем, перец - отдельно на другом сервере. Например, твой код при запуске грузит себе этот перец и при сохранении/загрузке паролей спроверяет их с комбинацией соли и перца. Перец - один на все пароли или на группу паролей (чтоб не ходить за перцем всякий раз, когда он нужен)

Но и мороки с ним больше - что делать, когда перец нужно обновить, например?
источник

AL

Andrey Listochkin in JavaScript fwdays
Если в не деньги храните, а это какой-то интернет-магазин условный, то соли с хорошим алгоритмом (bcrypt, scrypt, argon2) хватит.
источник

КВ

Кукурузный Воришка in JavaScript fwdays
Спасибо, повеселил)
источник

TS

Timur Shemsedinov in JavaScript fwdays
Viktor
@tshemsedinov, подскажи. Смотрю, что стартет ките сказано "Metaserverless cloud, an open source cloud platform based on Metarhia technology stack and Node.js.". А есть уже где глянуть исходники клауда или еще пока в закрытой разработке?
Скоро будет, стартер кит это упрощенная версия, я обрезал все, и оставил только то, что нужно для запуска одного инстанса, демонстрации новых возможностей ноды и красивой архитектуры и понятных абстракций. Но все это по интерфейсам совместимо. В манифесте можно подробнее глянуть https://github.com/metarhia/Manifesto/blob/master/RU/Technology.md
источник

TS

Timur Shemsedinov in JavaScript fwdays
Andrew Ivanov
Странно слушать про один тазик для любых проектов. Вообще подход с baremetall в корне устаревший. Контейнеры и Кубер рулят миром и нода в нем отлично себя чувствует. И да, CI/CD никто не отменял, и это как раз для TTM самое оно. Так что если хотите масштабируемость из коробки и всякие кенери деплойменты без головняков что ваш "один тазик" упал и не поднялся - кубер курите с самого начала.
Где я про baremetal сказал?
источник

TS

Timur Shemsedinov in JavaScript fwdays
Andrew Ivanov
Субд вспоминать в контексте кубера это красивая манипуляция. Потому как StatefulSet ресурсы это как раз то что сложнее всего поддается масштабированию. Бывают и другие задачи.
У меня стартер кит стейтфул
источник

AZ

Artem Zakharchenko in JavaScript fwdays
@tshemsedinov Досмотрел вторую часть, получил массу удовольствия, очень круто изложенная и структурированная информация. С одним моментом не мог согласиться - отказ от ОРМ.
- На JS действительно нет нормальных (typeORM?)
- Качество генерируемой query мягкоговоря желает лучшего
- Ну и все вытекающие последствия
Но
- Если следовать Grasp/solid - переход от ORM к queryBuilder должен выглядеть как эволюционный процесс, недорогой и безопасный(тесты)
- Пока есть ограничения построения инфры и поднятия физических инстансов(такое часто бывает, инфраструктура может быть блокером) команда может писать на sqllite (главное, чтобы база было корректно спроектировано)
источник

VM

Vitalii Mandelbro in JavaScript fwdays
Alexander
там розглянут приклад NHibernate. Але не всі ОРМ так працюють
ось краща стаття про бенефіти і недоліки https://seldo.com/posts/orm_is_an_antipattern
источник

Y

Yevhen in JavaScript fwdays
@tshemsedinov Вы говорили, что у Вас есть видео где Вы рассказываете про ORM. Не подскажете как оно называется?
источник