• Где лучше хранить JWT?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Где угодно, но в зашифрованном виде и с флагами secure и http-only.

    Доп.защита: Можно разместить в localStorage контрольную сумму полученного токена и тупо проверять его наличие в js и на соответствие конкретному значению, привязанному к клиенту. Любое обращение без подписи запроса этой КС - фиксировать как нарушение и блокировать учётку.

    Главное - привяжите токен к клиенту через fingerprint2.js при двухфакторной аутентификации клиента.

    Чтобы при хищении даже всех кук (например, через сторонние расширения), они были бы попросту бесполезны, "отпечаток" клиента передавайте при:
    1. Авторизации (только двухфакторная аутентификация: почта, смс, GA и т.п.),
    2. При смене ip-адреса
    3. При смене user-agent
    4. По истечению срока давности
    И обязательно это всё через шифрование своим публичным "ключом" сервера (помимо https!).
    Ответ написан
    41 комментарий
  • Где лучше хранить JWT?

    bingo347
    @bingo347
    Crazy on performance...
    В принципе это относится не только к JWT, но и к любым данным, которые критично не дасть украсть.
    Такие данные лучше всего хранить в secure http-only cookie. С secure думаю понятно, такая кука будет отправляться на сервер только по https, что снизит вероятность угона путем подслушивания трафика. А вот с http-only причина та же, почему не стоит использовать localStorage - не http-only кука доступна из JS, из любого JS загруженного на странице.
    Что в этом плохого? Вы уверены во всех скриптах, подключенных к Вашей странице? А если сторонний сервер был взломан? А если у пользователя стоит вредоносное расширение, подменяющее определенные скрипты на всех сайтах? Соберет такой вредонос из localStorage токены Ваших пользователей, а Вам потом с ними разбираться, почему их взломали.
    Ответ написан
    3 комментария
  • Тестирование программы на Go?

    @DmitriyTitov
    Тест написан корректно. А вот основная программа, по всей видимости, нет. Приведите текст main.go.
    Ну или смотрите в нём строчку №80, как пишет дамп стека выполнения.
    Ответ написан
    Комментировать