Разработка
Вход в публичном приложении
Как сделать свою регистрацию и вход в приложении с уровнем «Любой по ссылке».
На уровне «Участники проекта» xflow сам знает, кто открыл приложение, ничего делать не нужно. На уровне «Любой по ссылке» платформа посетителя не узнаёт: регистрацию, вход и права делает само приложение через свои функции. Эти функции открыты всему интернету.
- Хранить только хеш:
crypto.scryptсо своей солью на каждого пользователя, сравнивать черезcrypto.timingSafeEqual. - Пароль не пишут в логи, не возвращают и не держат в браузере.
- Неудачные входы считают по почте и по
event.xflow.ipи притормаживают.
- После входа функция создаёт случайный токен (
crypto.randomBytes(32)), хранит в таблице его SHA-256 и срок, а сам токен отдаёт в ответе. - Приложение держит токен в
localStorageи шлёт в заголовкеX-Session. Куки не работают: платформа их не пропускает. - Срок несколько часов, каждый вызов его продлевает. Выход и смена пароля удаляют сессии.
- Токен не кладут в адрес (
?session=): он останется в истории. - Свой заголовок вроде
X-Session, а неAuthorizationи не служебные заголовки платформы: их она заменяет или вырезает.
Каждая функция
Заголовок раздела «Каждая функция»Функция, которая отдаёт данные вошедшему, читает X-Session из event.headers, находит
сессию и фильтрует строки по пользователю в SQL. Спрятанная кнопка не защищает.
В коде приложения не бывает ключей, списка пользователей, хешей и проверки роли как единственной защиты.
Платформа не отправляет письма за приложение. Для подтверждения почты и сброса пароля нужен
почтовый сервис, его ключ кладут в xflow env set.
Проверка
Заголовок раздела «Проверка»xflow dev не передаёт X-Session и зовёт функции от вашего имени. Вход проверяют на адресе
приложения.