Опасно ли хранить JWT в файле cookie, доступном для Javascript? - PullRequest
0 голосов
/ 23 января 2019

Другими словами, опасно ли иметь JWT, который не содержит никакой конфиденциальной информации, в cookie без флага httponly?Я понимаю, что главная проблема безопасности - это атаки XSS.Так как Javascript может получить доступ к cookie, злоумышленники могут получить доступ к токену.Но так как в JWT нет никакой конфиденциальной информации, является ли единственная угроза сеанса сбоем?

Суть проблемы в том, что я хотел бы, чтобы JWT был в файле cookie, доступном для Javascript, потому что я хочуиметь возможность доступа к утверждениям токена, чтобы ограничить функциональность пользователя в пользовательском интерфейсе.

Так что лучше использовать файл cookie non -httponly для JWT или создатьJWT в cookie-файле httponly и просто создайте отдельный non -httponly cookie для хранения учетных данных пользователя?

1 Ответ

0 голосов
/ 23 января 2019

Хотя JWT не содержит никакой конфиденциальной информации, сам токен является конфиденциальным.JWT обычно используются в качестве токенов на предъявителя, что означает, что они (возможно ограниченные по времени) учетные данные, которые могут использоваться любым лицом, обладающим токеном, для доступа к любым ресурсам, для которых выдан токен.

Злоумышленник, который былТаким образом, возможность получения токена через успешный XSS позволит выдать себя за жертву, которая отправляет запросы на ваш сервер.Это то, что вы описываете как «только» угон сеанса.Я не уверен, почему вы говорите «только».Обычно перехват сеанса довольно серьезен; o)

Более безопасный подход, на мой взгляд, как вы говорите, сделать файл cookie JWT HTTP-Only и иметь отдельный файл cookie, содержащий информацию, используемую для ограничения функциональности вUI.

Помимо этого, ограничение пользовательского интерфейса таким образом не должно рассматриваться как эффективная мера безопасности само по себе, поскольку почти наверняка можно будет обойти ограничения пользовательского интерфейса, если они не будут применены насерверная сторона.Вполне возможно использовать его для персонализации пользовательского интерфейса.

...