我有一个登录表单,供用户输入他/她的密码。该表单绑定到 AngularJS 模型。假设在相应的控制器中,用户给出的密码可通过$scope.password
.
实际的登录过程由以下函数调用处理:login($scope.email, $scope.password)
。在该过程之后,应用程序逻辑不再需要密码,我的愿望是从浏览器的内存中清除它。
对我来说,最明显的问题是:打电话后我可以做什么login($scope.email, $scope.password)
为了清除保存该值的内存$scope.password
目前绑定到?我希望这个问题对于一般的 JavaScript 来说是有效的。
但是,从这里开始,我还有两个特定于 AngularJS 的问题:
由于各种 Web 浏览器相关场景中没有任何内容对浏览器内存的内容做出承诺,因此您永远无法确定是否正在清除内存。
考虑简单的 JS 代码:
x=1234;
x=5678;
即使在如此简单的代码片段中,您也不能保证您确实已删除1234
从记忆里。你所知道的是,当你引用x
它的价值将是5678
。你不知道是否5678
覆盖1234
或被写入新的内存位置。
同样,一旦用户输入密码以响应包含以下内容的表单:
<input type="password" name="p">
您无法保证您可以删除保存其密码的内存;即使您再次运行该表单。
解决这些限制的唯一方法是编写一个作为桌面应用程序或浏览器插件运行的胖客户端。
请注意,上述内容并不是说浏览器对内存中的秘密不重视。他们通常会尝试防止内存检查漏洞。只是您不了解他们在做什么以及如何利用它们。即使您这样做了,它也会特定于每个浏览器版本。
因此,除非您觉得您需要比银行等机构更多地保护密码,否则请习惯这样一个事实:您必须将用户的密码交到(希望如此)值得信赖的浏览器手中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)