首页 > 解决方案 > C# 保护内存中的字符串

问题描述

我正在更新一个 C# 项目以使其更安全(我对它有非常严格的要求)。其中一项要求是保护内存中的一些数据,以防止“未经授权”访问它。我进行了研究,最终得到了“ProtectedMemory.Protect”。我不是 C# 方面的专家,所以我不确定它是否正确。我如何实现它的简化示例:

public class User
{
    public string Name
    { 
        get 
        { 
            return Encoding.UTF8.GetString(ProtectedMemory.Unprotect(_name, MemoryProtectionScope.SameLogon)); 
        }
        set 
        { 
            _name =  Encoding.UTF8.GetBytes(value);
            ProtectedMemory.Protect(_name, MemoryProtectionScope.SameLogon);
        }
    }

    private byte[] _name;
}

这是有道理的吗?:D

标签: c#security

解决方案


如果您正在做 ASP.NET Core 应用程序,请查看数据保护: https ://docs.microsoft.com/en-us/aspnet/core/security/data-protection/using-data-protection?view=aspnetcore -3.1

原来下面已被弃用。感谢您指出了这一点。

否则,如果您被允许使用不安全的代码,请在SecureString 此处查看


推荐阅读