3

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

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

4

1 回答 1

8

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

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

于 2017-05-30T06:41:31.913 回答