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

2023-12-01

我有一个登录表单,供用户输入他/她的密码。该表单绑定到 AngularJS 模型。假设在相应的控制器中,用户给出的密码可通过$scope.password.

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

对我来说,最明显的问题是:打电话后我可以做什么login($scope.email, $scope.password)为了清除保存该值的内存$scope.password目前绑定到?我希望这个问题对于一般的 JavaScript 来说是有效的。

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

  • 密码表单值是否绑定到更多 AngularJS 内部变量而不仅仅是$scope.password?在这种情况下,覆盖$scope.password不会有帮助的。

  • 当切换视图时,旧视图对应的控制器及其范围将被“销毁”。我是否应该在退出登录视图后的短时间内简单地依靠垃圾收集来清除包含密码的内存?


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

考虑简单的 JS 代码:

x=1234;
x=5678;

即使在如此简单的代码片段中,您也不能保证您确实已删除1234从记忆里。你所知道的是,当你引用x它的价值将是5678。你不知道是否5678覆盖1234或被写入新的内存位置。

同样,一旦用户输入密码以响应包含以下内容的表单:

<input type="password" name="p">

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

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

请注意,上述内容并不是说浏览器对内存中的秘密不重视。他们通常会尝试防止内存检查漏洞。只是您不了解他们在做什么以及如何利用它们。即使您这样做了,它也会特定于每个浏览器版本。

因此,除非您觉得您需要比银行等机构更多地保护密码,否则请习惯这样一个事实:您必须将用户的密码交到(希望如此)值得信赖的浏览器手中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何清除JavaScript中的敏感内存? 的相关文章

随机推荐

  • 如何使用画布处理多个按键

    使用类似的东西 window addEventListener keydown handleFn true 我如何能够同时处理多个按键以供多人使用 多人将使用一个键盘 因此可以同时按下 Q 和 P 键来移动屏幕上的不同对象 我没有keyup
  • PHP Curl HMAC-SHA1

    在这方面需要帮助 我需要从 URL 的 API 调用中获取 json 数据 它说调用需要 内容类型 application x www form urlencoded HTTP 标头 密钥 gt APIKEY HTTP HEADERS si
  • 当添加 ZXing 依赖项时,Java 中的 Selenium 停止使用 java.lang.IllegalAccessError:from class org.openqa.selenium.net.UrlChecker

    因此 我正在使用 Selenium 和 gradle 在 java 上构建一个测试项目 现在我需要扫描之前截取的屏幕截图中的二维码 我查看了如何做到这一点 ZXing 扫描仪代码似乎是最好的建议 如果不是 请告诉我 我的问题是 从我将 co
  • 无法远程访问WCF服务

    背景 我们有一个WCF 网络服务主办于视窗服务与运行基本Http绑定 PROBLEM 浏览到本地计算机上的服务 URL 工作正常 但尝试使用外部 IP 地址 远程或本地 进行浏览则不起作用 例子 http localhost 8000 bo
  • '连接被拒绝!针对 Selenium Grid 运行 Nightwatch.js 测试时,selenium 服务器是否已启动?\n'

    I use Nightwatch Cucumber基于Nightwatch js自动化我的测试 现在我想使用带有 Selenium 集线器和多个 Selenium 节点的 Selenium Grid 来执行我的测试 这些是我当前实际使用的依
  • 嵌套 boost multi_index_container 的查找

    考虑以下代码 struct VersionData VersionData VersionData VersionData rhs int m versionId int m weight int m pId bool m hdi stru
  • Android App Bundle 终止了 Google Play 游戏集成 - 使用普通的旧 APK - 我该如何解决这个问题?

    以下是事实 我的游戏应用程序是100 使用调试密钥库使用Google Play Games签名的apk 可以登录 解锁成就 我的游戏应用程序是100 使用发布密钥库使用Google Play Games签名的apk 可以登录 解锁成就 每当
  • DLL 从其父级(加载器)获取符号

    我正在将程序移植到 MS Windows 该程序使用动态加载的插件 插件引用主程序中的符号 如果没有解析所有符号 我什至无法让 DLL 通过链接器 有办法解决这个问题吗 抱歉 我想在评论中要求澄清 但我是个新手 不允许这样做 当您说插件 在
  • PDO DBLIB 访问 SQL Server 2008 和 2012

    经过大量阅读和搜索后 我能够让 PDO DBLIB 在 Centos 6 4 32 位中工作 有很多针对 64 位的文档 而不是针对 32 位的文档 令我惊讶的是 以下代码可以从外壳命令 PHP 测试 php
  • Ektron 分类法和库项目(v9 中)

    我们最近从 Ektron 8 6 升级到 9 0 Ektron CMS400 NET 版本 9 00 SP2 Build 9 0 0 249 我有一些代码 如下 我们用它们来显示分类中项目的链接 在 8 6 下 如果库项目已添加到分类法中
  • 外部包的自定义 JSON 封送

    如何将自定义 JSON 封送处理添加到外部包的结构中 我无法添加MarshalJSON and UnmarshalYAML到这些结构 您可以将该结构添加到您定义的结构中 然后添加功能MarshalJSON and UnmarshalYAML
  • Three.js 正交相机:对具有透视的立方体进行全部缩放

    我开发了一个简单的three js渲染立方体的应用程序 我创建了三个文件 index html viewer style css and viewer js 内容为index html如下
  • 带垂直线的散点图 - 棒棒糖图

    我想建立一个像这样的散点图 http www cbioportal org public portal images previews tp53 mutations png 其中每个点都有一个圆 垂直线 我在下面找到的最接近的东西是 3D
  • Laravel 应用程序语言发生变化?

    我最近为德国客户在 Laravel 中开发和应用 现在 客户希望知道该申请是否可以用德语而不是英语查看 当然 前端的所有视图我都是用英文的Blade设计的 现在有没有办法将视图翻译成所需的语言 是否有一个包或其他方法可以实现此目的 Lara
  • 如何正确设置 Windows7 以将 Selenium 与 Firefox [TDD with Python] 结合使用?

    我正在将我的系统 Windows 7 Pro 64 位 Python 3 5 通过 Anaconda 设置为通过 selenium 使用 Firefox 来跟随这本书使用 Python 进行测试驱动开发 Python 不断抛出错误WebDr
  • 如何测量线程等待时间?

    我不知道如何测量线程等待锁定的时间 我必须确定一个线程等待锁定的时间是否超过 1 秒 如果是 则运行另一个线程 谢谢 尝试这个 long startTime System nanoTime methodToTime long endTime
  • 如何使用 LINQ 针对 1 个表返回父级和子级

    一直在寻找解决方案 但到目前为止还没有找到 我相当确定通过一个 linq 调用就可以实现这一点 但很难解决 我有以下数据结构 Id ParentId Name ValidFlag 1 NULL parent 1 1 2 NULL paren
  • 检查 Console.ReadLine()!=null

    我正在为我的应用程序制作一个 CMD 并且发现当我检查 Console ReadLine null 时遇到了麻烦 string input Console ReadLine if input null SomeFunction input
  • CSS 多个多列 div

    我有一堆想要显示的项目 文本 图像 混合内容等 用户可以定义该项目出现在哪一行和哪一列 例如 在第 1 行中 可能有两个项目 列 都是图像 在第二行中 可能有三个项目 列 其中一个带有图像 另外两个为纯文本 哦 用户可以指定任何特定列 图像
  • 如何清除JavaScript中的敏感内存?

    我有一个登录表单 供用户输入他 她的密码 该表单绑定到 AngularJS 模型 假设在相应的控制器中 用户给出的密码可通过 scope password 实际的登录过程由以下函数调用处理 login scope email scope p