Перейти к содержимому
getxflow.com

Разработка

Вход в публичном приложении

Как сделать свою регистрацию и вход в приложении с уровнем «Любой по ссылке».

На уровне «Участники проекта» 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 и зовёт функции от вашего имени. Вход проверяют на адресе приложения.