Используя 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) модификация строки приведет к созданию новой строки объект в памяти. Таким образом, исходная чувствительная строка все еще может существовать где-то в дампе памяти приложения. Я бы хотел этого избежать. РЕДАКТИРОВАТЬ: опечатка - g c .collect () вместо просто g c ()
Любые предложения, как я могу полностью очистить чувствительную строку из памяти?