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

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

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

SecureString不被认为是安全的。 如果你要这样做,你可以使用char[]并在完成后覆盖数据,或者你可以使用unsafe代码在完成后覆盖一个string (只是…希望它不是实习或共享参考) ; 请注意,这适用于调用堆栈中的任何位置。 请注意,操作系统可能由于各种原因复制了页面,如果没有非常仔细地分配内存,它甚至可能在磁盘上(交换文件)。

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