【发布时间】:2025-12-11 00:50:02
【问题描述】:
在使用 python 时,我遇到了一个有趣的问题:我的脚本读取了一些敏感信息,我希望数据在使用后立即被彻底清除。比如:
try:
useData(sensitiveString)
except:
print("There was a problem executing useData()")
finally:
scrubFromMemory(sensitiveString)
这是为了尽量减少敏感字符串仍然驻留在内存中的机会,即使在发生错误时也是如此。 我想过改变字符串,比如:
sensitiveString = "*" * (len(sensitiveString)-1) # does this overwrites memory, or creates a new object?
sensitiveString = "*" * 10000 # sensitive string is guaranteed to be relatively short
del sensitiveString
gc.collect()
但我在某处读到,在 python 中(由于 c 实现),对字符串的修改将导致在内存中创建一个新的字符串对象。所以原来的sensitiveString仍然可以“幽灵”存在于应用程序的内存转储中。我想避免这种情况。 编辑:错字 - gc.collect() 而不仅仅是 gc()
有什么建议可以让我从内存中彻底清除敏感字符串吗?
【问题讨论】:
标签: python string security memory language-implementation