Вопросы относительно JWT - PullRequest
       27

Вопросы относительно JWT

0 голосов
/ 03 октября 2018

, поэтому я сейчас пытаюсь настроить функцию "запомнить меня" с помощью cookie-файлов nodejs jwt. Здесь Я нашел пример для зашифрованного куки.Я также прочитал их введение.Теперь я планирую использовать это промежуточное программное обеспечение для экспресс-хранения для хранения user_id для идентификации с базой данных mysql.
Мои вопросы к этому:

  • На сайте jwt естьотладчик, когда я изменяю секрет, только изменения подписи не будут настолько безопасными, если полезная нагрузка будет зашифрована с использованием секрета?
  • Сколько символов должно быть секретным, чтобы его нельзя было переборить 512, 1024 2048?
  • Как быстро секретный грубый удар?Как часто его следует менять, если брутфорсинг быстрый?
  • Как лучше всего обезопасить токен с помощью модуля, упомянутого выше?Кроме того, как установить токен (пример использования показывает только, как читать)?

В настоящее время моя главная проблема в том, что когда кто-то может создать токен, он может установить свой user_id и иметь доступ к любой учетной записи.Я был бы рад, если бы кто-то мог уточнить это для меня.

1 Ответ

0 голосов
/ 04 октября 2018

В: На сайте jwt есть отладчик, когда я меняю секрет, только изменения подписи не будут настолько безопасными, если полезная нагрузка будет зашифрована с использованием секрета?

Основное требование для JWT:что он имеет цифровую подпись.Если вы поместите конфиденциальные данные в JWT, вам также потребуется зашифровать их.Но я настоятельно рекомендую вам не помещать туда конфиденциальные данные, потому что если пользователь потеряет свой токен JWT, вы захотите минимизировать ущерб.Например, в веб-приложении OWASP juice shop (намеренно небезопасное веб-приложение с целью обучения людей безопасности) они помещают хэш пароля пользователя в токен /.Это позволяет злоумышленнику восстановить пароль пользователя с помощью межсайтовых сценариев, как показано в этом блоге .

В: Сколько символов должен иметь секрет, чтобы его нельзя было взломать 512, 1024 2048?

Зависит от используемого вами алгоритма JWT.Если вы используете HMAC, то 256 бит (32 байта) - это много, гораздо больше, чем нужно.Если вы используете RSA, то лучше всего использовать 2048-битный (256-байтовый).

В: Как быстро работает секретный брутфорс?Как часто его следует менять, если грубое принуждение является быстрым?

Оно не может быть применено в течение всей жизни Вселенной с использованием всех компьютеров на планете, предполагая, что квантовые компьютеры не становятся реальностью (если квантовые компьютеры делают это).стать реальностью, тогда все ставки сняты).Криптографы - очень умные люди, и они проектируют эти алгоритмы таким образом.Например, если вы хотите узнать о безопасности RSA, начните с просмотра поля с общим номером sieve и времени его атаки.:-) Это не грубая сила - грубая сила - медленная, тупая атака - но вместо этого это интеллектуальный алгоритм, основанный на алгебраических свойствах модуля.

Итак, в общем, используйте рекомендуемый размер ключа для выбранного вами алгоритма и не беспокойтесь о повороте ключа, если у вас нет оснований полагать, что он скомпрометирован.Если для проверки токена требуется только одно место, и это место совпадает с тем, которое генерирует токен, то HMAC является хорошим выбором.Однако в противном случае вам лучше использовать алгоритм с открытым ключом, такой как RSA.

В: Какова наилучшая практика для защиты токена с помощью модуля, упомянутого выше?Кроме того, как установить токен (пример использования показывает только, как читать)?

Поскольку вы помещаете его в файл cookie, следуйте обычным рекомендациям для файлов cookie (Secure, HttpOnly и т. Д. ...).

...