SecureString 作为全局应用程序变量是否安全?

我有一个带有登录第一个屏幕的应用程序。密码在密码文本框中输入,这是一个安全字符串。

我的想法是将此 SecureString 存储在全局应用程序变量中,因为我将在某些操作中需要它,所以我想避免用户每次都必须输入密码。一个动作可能是发送电子邮件,我需要用户和密码,所以我不希望用户每次要发送和发送电子邮件时都写电子邮件帐户的密码。

我已经阅读了一些帖子,我知道最后我将需要来自 secureString 的纯文本,这是弱点,因此困扰的解决方案是减少纯文本在内存中的时间。可以在此处找到一些解决方案。

但我的问题是,全局变量如何是一个安全字符串,在不解码的同时安全吗?如果这不是一个好的选择,还有其他更好的选择,但不需要用户每次操作需要密码时都输入密码?

谢谢。


桃花长相依
浏览 189回答 2
2回答

米脂

存储SecureString包含密码的不安全。尽管该字符串是加密的,这会使窥探者更难找出它是什么,但它仍然存在并且可能会被解密。实际上,使用 a 的主要优点之一SecureString是能够在不再需要它时释放它。看看这里:总的来说,SecureString 比 String 更安全,因为它限制了敏感字符串数据的暴露。但是,这些字符串可能仍会暴露给任何有权访问原始内存的进程或操作,例如在主机上运行的恶意进程、进程转储或用户可查看的交换文件。不使用 SecureString 来保护密码,推荐的替代方法是对存储在进程之外的凭据使用不透明句柄。如果不深入了解您的应用程序,我可以告诉您的是:如果您必须存储包含密码的字符串,请使用SecureString. 但是,例如,如果您可以使用 Windows 集成安全性或任何其他机制来传播凭据,那就更好了。最后,没有应用程序是完全安全的。您必须了解您的攻击媒介......谁将使用该应用程序,它的部署位置等。否则您可能会花太多时间担心一件小事(例如内存转储)而忘记一个更大的问题(您的数据库安全吗?管理员密码安全吗?)。
打开App,查看更多内容
随时随地看视频慕课网APP