У меня есть форма для входа, чтобы пользователь мог ввести свой пароль. Эта форма связана с моделью AngularJS. Предположим, что в соответствующем контроллере пользовательский пароль доступен через $scope.password
.Как очистить чувствительную память в JavaScript?
Настоящая процедура входа в систему обрабатывается этой функцией: login($scope.email, $scope.password)
. После этой процедуры логика приложения больше не нуждается в пароле, и я хочу удалить ее из памяти браузера.
Для меня наиболее очевидный вопрос: что я могу сделать сразу после вызова login($scope.email, $scope.password)
, чтобы очистить память, удерживая значение, которое в настоящее время связано с $scope.password
? Надеюсь, этот вопрос применим для JavaScript в целом.
Но тогда, следуя отсюда, у меня есть еще два AngularJS-специфические вопросы:
это пароль значение формы связаны с более AngularJS-внутренних переменных, чем просто
$scope.password
? В этом случае переопределение$scope.password
не помогло бы.При переключении вида контроллер, соответствующий старому представлению, и его область действия становятся «разрушенными». Должен ли я просто полагаться на сборку мусора, чтобы очистить память, содержащую пароль, в течение короткого промежутка времени после перехода от входа в систему?
Какова проблема, которую вы пытаетесь решить? Вы не можете сделать это в JavaScript, действительно, поскольку среда выполнения не обеспечивает контроля над тем, что происходит с строковыми примитивами, когда они собирают мусор. – Pointy
@Pointy: Я принимаю, что «очистка пароля из памяти обычно не выполняется или не может быть надежным способом» в качестве ответа, если это то, что вы пытаетесь сказать. Это первое расширенное клиентское приложение на основе JavaScript, над которым я работаю, и, конечно же, меня интересует подход с лучшей практикой. –
Дело в том, что веб-приложение должно полагаться на набор связанных с безопасностью поведения, которые должны быть должным образом реализованы клиентскими браузерами. Такие вещи, как защита от запросов на межсайтовый сайт и правильная реализация безопасности файлов cookie, - это то же, что и ваш код. Каждое окно (ну, каждое семейство окон) получает изолированную среду выполнения JavaScript. Кроме того, поскольку нет распределения памяти с низким уровнем сырых массивов, нет никакой возможности сканировать свободную память (без использования ошибки браузера). – Pointy