擦除python中变量使用的ram space,防止内存转储攻击

Erase ram space used by variable in python, prevent memory dump attack

正在 python 中寻找此问题的经过验证的解决方案。

我有这样的代码:

verySensitveData = "secret, big secret"
#useing verySensitveData in code
#not need it any more
del verySensitveData # now variable is unusable in later code 
collected = gc.collect() #collected and removed

现在它应该在调用 gc 时从 RAM 中消失。

这是否会强制 OS 使用 GC 自动擦除 verySensitveData 变量使用的地址上的数据?

它应该永远消失了,没有 ram 内存转储可以检索变量 verySensitveData 中的数据吗?

没有。 gc.collect() 只会导致 Python 检查被引用但无法访问的对象(例如,两个对象相互引用,但没有其他对象)。它不会触发任何类型的内存清理。

如果让您的程序抵抗内存转储很重要,Python 不是编写它的正确语言。Python 很少保证数据将如何存储在内存中,并且很可能您处理的任何字符串在处理过程中都会在内存中复制,这可能会在内存中留下您的字符串的部分或完整副本。 Python 可能会重新使用该内存或稍后将其释放给 OS,但不会采取任何特殊措施来擦除它。