首页 > 解决方案 > ASP.NET DataAnnotations 是否阻止将密码作为纯文本保存在内存中?

问题描述

让我们来看看 Visual Studio 2017 中 ASP.NET MVC5 自动生成的代码:

public class RegisterViewModel
{
    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

password成员被标记为DataType(DataType.Password)。我们知道,如果我们以纯文本形式保存密码,即使在运行时在 RAM 中,这也是漏洞。

我的问题是这个标签是否会导致字符串存储在内存中?

当我调试并查看内存时,我找不到密码,虽然我可以找到另一个字符串。

标签: asp.netsecuritymemory

解决方案


推荐阅读