2015-06-26 3 views
9

Существует множество статей, в которых обсуждается, что является лучшим местом для хранения JWT на клиентах. Короче говоря, они все о -jwt authentication: cookie vs header

  • Http только безопасное печенье - не XSS, но vulnarable к XSRF

  • Заголовок (сохраняются в локальном хранилище или DOM) - не XSRF, но vulnarable к XSS

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

Итак, что делать, если разбить JWT и сохранить его часть в файле cookie и другой части в заголовке? Было бы нерушимым?

Это также должно решить «выйти» проблемы. - удаление части заголовка сделает браузер не в состоянии входа в

С наилучшими пожеланиями, Евгений.

ответ

8

JWT должен оставаться вместе, иначе валидация подписи не будет работать.

Защита от XSRF довольно проста, вам просто нужен еще один файл cookie.

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

https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Storage_APIs

Отказ от ответственности: Я работаю в Stormpath, мы имеем облачное решение управления пользователями, и мы тратим много времени на безопасность. Я написал два сообщения в блоге, где я обсуждаю JWTs и фронтальный AUTH:

Token Based Authentication for Single Page Apps (SPAs)

https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/

Надеется, что это помогает!

+0

Но дополнительный файл cookie для защиты от XSRF означает поддержание сеанса на стороне сервера, правильно? Если это так, склеивание JWT обратно намного проще и легче. И снова, если только какая-то часть JWT хранится в локальном хранилище, может ли она быть любой ценностью для злоумышленника? – user656449