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

我有这个课程来代表我的用户:

public class User
{
    public int ID {get; set;}
    public string UserName {get; set;}
    [DataType(DataType.Password)]
    public string Password {get; set;}
}

我的register方法的简化版本如下所示:

[HttpPost]
Register(User newUser)
{
    ...
    _context.add(newUser);
    await _context.SaveChangesAsync();
    ...
}

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

最佳答案
对对对

切勿将密码存储为纯文本

尽管其中大部分是安全性讨论,而不是编程性讨论,但您只应存储安全的哈希(PBKDF2,Argon和Bcrypt是当前标准)以及用于该哈希的唯一盐.

照原样存储它只是要求某人窃取您的数据库并获得所有用户的密码,而无需比阅读“密码”列(他们可能在其他地方重复使用了一百万个)付出更多的努力.

仍然可以将其存储为字符串.

DataType.Password只是类的使用者要读取的注释. (每https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.datatype(v=vs.110).aspx个).从存储/数据库的角度来看,它不会增强安全性.

转载注明原文:c#-首先使用ef核心代码将密码存储在sql server数据库中 - 代码日志