为什么我应该在字符串上使用SecureString?

时间:2019-02-04 06:57:32

标签: c# .net security

在探索一个现有项目时,我才来到这段代码。我想到的问题是,何时以及为什么我应该在SecureString上使用string?它提供什么好处?

public interface IAuthenticationService
{
    bool Login(string username, SecureString password);
}

注意:我的兴趣点是仅仅知道SecureStringstring提供的额外好处。

4 个答案:

答案 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,为什么您应该避免使用它。