首先使用ef核心代码在sql server数据库中存储密码

toc*_*ool 2 c# authentication passwords asp.net-core-mvc

我有这个类代表我的用户:

public class User
{
    public int ID {get; set;}
    public string UserName {get; set;}
    [DataType(DataType.Password)]
    public string Password {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我的寄存器方法的简单版本如下所示:

[HttpPost]
Register(User newUser)
{
    ...
    _context.add(newUser);
    await _context.SaveChangesAsync();
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我应该在存储之前从常规字符串中更改密码类型吗?如果是这样,对于什么数据类型?

Bra*_*NET 5

对对对

切勿将密码存储为纯文本

虽然这很大程度上是安全讨论而不是编程安排,但您应该只存储安全散列(PBKDF2,Argon和Bcrypt是当前标准)以及用于该散列的唯一salt.

按照您的要求存储它只是要求某人窃取您的数据库并获取所有用户密码而不需要比阅读Password专栏(他们可能重复使用其他一百万个地方)更多的努力.

它仍然可以存储它string好像.

DataType.Password只是您班级消费者阅读的注释.(按https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.datatype(v=vs.110).aspx).它并没有从存储/数据库的角度增强安全性.

  • 那么类属性的 DataType(DataType.Password) 注释根本不加密或散列密码吗? (2认同)