2016-09-15 2 views
1

Мне нужно сохранить токен обновления в памяти в приложении с угловым (Javascript).Защита refresh-token в Javascript/AngularJS

Токен будет доставлен через Ajax-вызов при аутентификации, а затем должен храниться в памяти до тех пор, пока пользователь не выйдет из системы или не закроет браузер.

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

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

AngularJS - http interceptor - resend all request after token refresh

было бы безопасно, если я заменил authService с собственным объектом хранить токен обновления и доступа?

+0

С какой угрозой вы пытаетесь защитить его? Обратите внимание, что он уже на клиенте, поэтому вы не можете скрыть его от пользователя. Какую атаку вы имеете в виду? Возможно, XSS? –

+0

Да XSS или вредоносный плагин браузера или ...? Я не очень разбираюсь в этих вопросах. – mvermand

+0

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

ответ

1

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

Напомним, что ваши данные записываются на диск. Подумайте о таких вещах, как компьютер, на котором запущен браузер, затерялся в памяти и начинает замену, или ваш пользователь решает спящий режим. Хотя на некоторых языках более низкого уровня вы можете запретить ОС записывать определенные страницы памяти на диск даже при замене, вы значительно меньше контролируете Javascript, и спящий режим также не может быть предотвращен (на любом языке, очевидно).

Стоит заметить, что ваша конфиденциальная информация может быть записана на диск в виде открытого текста (если только не существует какого-либо шифрования диска), и вы не можете многое сделать в Javascript, я думаю. Если это неприемлемо, вы, вероятно, не должны использовать Javascript.

Другой тип атаки может быть злоумышленником, использующим уязвимости браузера или операционной системы для доступа к вашей части памяти. Вы тоже ничего не можете поделать, вам просто нужно доверять ОС и браузеру.

И, наконец, есть атаки уровня приложения, в основном XSS. Я думаю, что вы можете в какой-то степени защитить вещи от этого, главным образом, путем хранения данных таким образом, чтобы не подвергать его другим скриптам, например, в закрытии. This article суммирует это выше, чем я мог.

+0

«В то время как на некоторых языках более низкого уровня вы можете запретить ОС записывать определенные страницы памяти на диск, даже если они меняются» - не так ли? Разве ядро ​​не предоставляет вам доступ к виртуальной памяти? – zerkms

+1

Да, но вы можете попросить ядро ​​не поменять его на диск, по крайней мере, на linux с mlock(): http://man7.org/linux/man-pages/man2/mlock.2.html –

+0

Я вижу , благодаря.. – zerkms