如何从进程内存中删除字符串?

时间:2017-05-30 06:13:57

标签: c# string securestring memory-dump

我有一个应用程序,它从Windows窗体文本框中获取一个字符串,并将其传递给使用字符串作为参数的API。我看到任务完成后仍然可以从进程内存中查询字符串。我遇到过使用SecureString进行字符串内存管理功能的建议。但是,如果我理解正确,如果安全字符串是从字符串构建的,或者安全字符串的值最终存储在字符串中,则字符串的用途就会失败。

请建议什么是最好的解决方案。

1 个答案:

答案 0 :(得分:6)

SecureString不被视为安全。如果需要执行此操作,您可以使用char[]并在完成后覆盖数据,也可以使用unsafe代码覆盖string时完成(只是...希望它没有实习或共享参考);请注意,这会在调用堆栈中应用无处不在。请注意,操作系统可能由于各种原因复制了页面,如果内存不是非常小心分配,它甚至可能在磁盘上(交换文件)。

但是,当时内存分析工具是winforms应用程序中的一个因素时,使用密钥记录器会更容易,或者只是用扳手来威胁某人获取密码: