Задать вопрос
Ответы пользователя по тегу Идентификация пользователей
  • Как правильно составить алгоритм безопасной авторизации?

    voidnugget
    @voidnugget
    Программист-прагматик
    Ну, во первых, стоит разобраться в чём же разница между аутентификацией и авторизацией - со стороны подобный вопрос выглядит довольно нелепо. Во вторых, если https считать небезопасной средой - можно пробросить ключики по Диффи-Хелману и шифровать трафик AES'ом, но это для полных параноиков, и ещё HMAC-SHA256 можно прикрутить... sha1(sha1(whatever)) с точки зрения криптографии полный "пэ". Обычно бэкенды принято делать stateless и всю инфу хранить в рамках пользовательской сессии, просоленной и пошифрованной. А, непосредственно, сами пароли в BCrypt / SCrypt etc.

    Аутентификация в таком случае может выглядеть следующим образом
    1. Происходит обмен ключами
    2. Человек отправляет свой логин-пароль на сервак по шифрованному каналу
    3. В ответ получает объект пользовательской сессии, который сохраняет в куках
    Сессия представляет собой не что иное как сериализированный шифрованный объект с "солью" которая прописана на всех запущенных экземплярах бэкенда - таким образом куда бы запрос не пришёл, он везде обрабатывается одинаково, и отпадает потребность в session-storage.
    4. Опционально, в рамках пользовательской сессии заводятся CSRF-токены.
    5. Опционально, весь траф нужно эскейпить, включая всякие там JSONP и прочее. Ангуляр вообще с коробки требует весь JSONP префиксить таким чудом ")]}',\n"
    Ответ написан
    Комментировать