gpt4 book ai didi

javascript - 如何清除 JavaScript 中的敏感内存?

转载 作者:行者123 更新时间:2023-12-03 21:27:28 26 4
gpt4 key购买 nike

我有一个登录表单供用户输入他/她的密码。此表单绑定(bind)到 AngularJS 模型。假设在相应的 Controller 中,用户提供的密码可通过 $scope.password 获得。 .

实际的登录过程由这个函数调用处理:login($scope.email, $scope.password) .在该过程之后,应用程序逻辑不再需要密码,我希望将其从浏览器的内存中清除。

对我来说,最明显的问题是:调用 login($scope.email, $scope.password) 后我能做什么?为了清除保存 $scope.password 值的内存目前是必然的?我希望这个问题一般对 JavaScript 有效。

但是,从这里开始,我还有两个 AngularJS 特定的问题:

  • 密码表单值是否绑定(bind)到更多 AngularJS 内部变量而不仅仅是 $scope.password ?在这种情况下,覆盖 $scope.password不会有帮助。
  • 切换 View 时,旧 View 对应的 Controller 及其作用域变为“销毁”。从登录 View 切换后,我是否应该简单地依靠垃圾收集在短时间内清除包含密码的内存?
  • 最佳答案

    由于在各种与 Web 浏览器相关的场景中都没有对浏览器内存的内容做出 promise ,因此您永远无法确定您正在清除内存。

    考虑简单的 JS 代码:

    x=1234;
    x=5678;

    即使在这样一个简单的片段中,您也无法保证您确实删除了 1234从内存里。您所知道的是,当您引用 x它的值为 5678 .你不知道 5678覆盖 1234或被写入新的内存位置。

    同样,一旦用户输入密码以响应包含以下内容的表单:
    <input type="password" name="p">

    您无法保证您可以删除保存他们密码的内存;即使您再次运行表单。

    绕过这些限制的唯一方法是编写一个作为桌面应用程序或浏览器插件运行的胖客户端。

    请注意,以上所有内容都不是为了说明浏览器在其内存中的 secret 是草率的。他们通常会尝试防止内存检查漏洞。只是您不了解他们的工作以及如何利用它。即使您这样做了,它也会特定于每个浏览器版本。

    因此,除非您认为您需要保护密码而不是银行,否则请习惯这样一个事实,即您必须将用户的密码放入(希望)值得信赖的浏览器手中。

    关于javascript - 如何清除 JavaScript 中的敏感内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311026/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com