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

时间:2016-01-30 02:07:32

标签: python memory ram dump

在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中的数据?

1 个答案:

答案 0 :(得分:2)

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

如果让你的程序抵制内存转储很重要,那么Python就不是用它编写它的正确语言.Python很少保证数据如何存储在内存中,并且很可能你处理的是任何字符串将在处理过程中在内存中复制,这可能会在内存中留下部分或完整的字符串副本。 Python可能会重用该内存或稍后将其发布到操作系统,但它不会采取任何特殊措施来擦除它。