在探索一个现有项目时,我才来到这段代码。我想到的问题是,何时以及为什么我应该在SecureString
上使用string
?它提供什么好处?
public interface IAuthenticationService
{
bool Login(string username, SecureString password);
}
注意:我的兴趣点是仅仅知道SecureString
比string
提供的额外好处。
答案 0 :(得分:3)
目的是避免将密码(或所谓的敏感字符串)以纯文本形式存储在内存中。那将使该应用程序潜在地易受攻击。但是,通常不可能,因为最后的string
必须由框架本身转换为纯文本。因此,SecureString
的实际作用是缩短将敏感string
保留在内存中的时间。
不过,它已经过时了,不再推荐用于新开发的link。
答案 1 :(得分:1)
顾名思义,其主要目的是提供security
。通常,带有机密信息(例如信用卡,密码等)的应保密的字符串/文本存储在SecureString变量中。不再需要该字符串时,将从计算机内存中删除该字符串。当实例初始化或修改值时,使用基础平台支持的机制自动保护SecureString实例的值。
SecureString对象类似于String对象,因为它具有文本值。但是,主要区别如下-
字符串 无法预测何时从计算机内存中删除System.String类的实例。因此,如果String对象包含敏感信息,则存在使用该信息后可能会泄露该信息的风险,因为您的应用程序无法从计算机内存中删除数据。
SecureString SecureString对象的值固定在内存中,并且它通过不允许传入常量字符串而自动提供加密,标记为只读,安全构造的功能
答案 2 :(得分:1)
引入了安全字符串,以为存储需要安全性的字符串(例如密码)提供更多保护。
在一个简单的级别上,通过加密字符串内容并将其存储在内存中来确保安全字符串的工作。但是,这种加密只会在点网框架上进行。
对于新开发,建议不要使用它来保护重要信息。
有关该课程的详细信息,请访问:Secure Strings
答案 3 :(得分:0)
就像上面或下面的接近答案(大胆的想法一样:))之间存在一个联系,为什么在string class上使用安全字符串,还有一个link,为什么您应该避免使用它。