gpt4 book ai didi

JavaScript 安全 : force deletion of sensitive data

转载 作者:行者123 更新时间:2023-11-30 17:03:05 25 4
gpt4 key购买 nike

假设我的应用有一段敏感数据,例如一个加密 key ,因为它正在执行本地加密/解密,我希望在注销时将数据从我的设备内存中完全清除。这将防止我的手机落入坏人之手,防止有人访问当前 JS 内存以检索解密 key 。

According to Mozilla , JS 中的所有数据类型都是不可变的。而且,据我所知,没有办法强制进行垃圾回收,尤其是在浏览器中。有没有什么 JS 方法可以确保数据从内存中完全清除?

如果不能,是否可以使用其他一些广泛支持的技术(如 IndexedDB 或 WebSQL)清除这些数据? (我假设加密/解密可以专门在 IndexedDB 或 WebSQL 层完成——这对我来说听起来有点疯狂,因为我假设这些数据仍然驻留在某个 JS 字符串中)。

像 ObjectiveC 或 JAVA 这样的母语是唯一的出路吗?

或者,我是不是多疑了,应该假设在 JS 中准备好进行垃圾收集的任何东西都会在及时的庄园中自动清除?

最佳答案

是的,字符串等是不可变的,可能会在内存中保留很长时间,直到下一个 GC 周期。

为了克服这个问题,您将 secret 存储在一个可变对象中。例如,在一个基本数组中:

var secret = ['s','e','c','r','e','t'];

现在,您可以简单地删除信息,即清空数组元素:

var len = secret.length
for (var i=0; i<len; ++i) {
secret[i] = '0'
}

这就是为什么许多使用处理密码和 secret 的 Java API 需要一个 char[]/byte[] 数组,以便您之后可以将它们清空。

关于JavaScript 安全 : force deletion of sensitive data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28511970/

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