我希望能够在C# (.Net 3.5)中向子进程传递SecureString(缓存的密码),但我不知道最安全的方法是什么。例如,如果我将SecureString转换回普通字符串并将其作为命令行参数传递,那么我认为该值可能容易受到磁盘分页攻击--这会使明文接触文件系统,破坏使用SecureString的目的。
是否可以传递SecureString的IntPtr?我能否使用命名管道而不增加风险?
是否可以传递SecureString的IntPtr?我能否使用命名管道而不增加风险?
除非您的子进程也知道如何使用SecureString,否则我认为没有直接传递它的方法。例如,Process.Start()方法有两个重载,可以使用SecureString,因此最小化了实际字符串值被嗅探的风险(仍然可能发生,因为在某个地方必须检索/取消编组实际值)。
我认为如何做到这一点很大程度上取决于子进程是什么以及如何启动它。