如果我编写一个C#应用程序并编译为.NET,或.NET Core,甚至是Mono,外部应用程序是否可以在运行过程中访问内存?
即。如果我写这行代码:
var password = "some password";
恶意软件是否可以扫描进程的内存地址并获取字符串?
我想这个问题在某种程度上与操作系统有关。而且,我想这也取决于恶意软件具有哪些访问权限,对吧?我猜我的问题答案与MacOS / Linux到Windows不同,对吗?
编辑:是否有任何可以想象的方法来保护内存中的字符串?是否有一些可以实现此目的的加密机制?
我可以做的一件事就是使用SecureString来缓解这个问题。但是,它并不完美: https://msdn.microsoft.com/en-us/library/system.security.securestring(v=vs.110).aspx#HowSecure
Microsoft推荐的方法是:
而不是使用SecureString来保护密码,建议使用 替代方法是对存储的凭证使用不透明句柄 在这个过程之外。
虽然,这不是具体的答案。对我来说,理解他们推荐的内容太过抽象。