我们正在使用Identity Framework 2.1.0,并计划向用户注册页面添加安全性问答。我们将有一个单独的问题表,并希望向AspNetUsers再添加2列
我想保留“ SecurityAnswer”列为散列,因为此表中已经有一个SecurityStamp列,我们可以将其用于散列和散列吗?
如果是,如何?如果否,还有哪些选择?
非常感谢您的帮助,感谢任何参考和指针。
要哈希您的安全性答案,可以使用UserManager.PasswordHasher
:
var manager = // get instance of UserManager
var hashedAnswer = manager.PasswordHasher.HashPassword("Very secret Answer to my secrect question");
// ... here store you hashed answer in database
当用户返回并尝试重置密码时,将获取答案的存储哈希值并将其与用户新提供的答案进行比较:
PasswordVerificationResult isValid = manager.PasswordHasher.VerifyHashedPassword(hashedAnswer, "Hello, this is the wrong answer");
if(PasswordVerificationResult.Success)
{
// reset password, answer is correct
}
这样的事情。
但是,我不喜欢秘密问题/答案。从安全角度来看,它们具有固有的缺陷。您的答案将成为另一个密码,并且比普通密码更容易猜到,因为该问题提供了提示。我建议您阅读特洛伊·亨特(Troy Hunt)撰写的有关密码重置的出色文章-它涉及秘密问题/答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句