繁体   English   中英

从头开始在ASP.NET中创建安全的用户登录系统

[英]Creating a secure user login system in ASP.NET from scratch

我正在尝试使用MongoDB启动ASP.NET网站。 启动ASP.NET项目使用与sql数据库的连接字符串实现用户授权架构。

我有一个与Mongo DB一起工作的网站,但是...该网站似乎已经实现了自动生成的用户登录系统,并且以某种方式更改了设置,以便将用户登录数据存储到Mongo数据库中。 我不想让Microsoft处理所有事情,而是希望基于我自己的库构建用户登录系统(最终目标是在F#中尽可能多地处理)。

我试图弄清楚用户授权代码如何将用户信息放入数据库中。 好像是黑匣子。 编码,

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
        var result = await UserManager.CreateAsync(user, model.Password);

进一步来说,

var result = await UserManager.CreateAsync(user,model.Password);

检查后会产生元数据中指定的功能。

我是否应该只是从拥有的工作网站复制设置,直到其自动运行,或者是否有办法手动重现用户登录系统? 从生成的代码中对流程进行反向工程是不可能的吗? 是否有从头开始创建安全用户登录系统的最佳实践的教程或指南?

这是通常最好由久经考验的库完成的事情之一。 但是,这可能是一个有趣的小项目。 对安全用户登录的典型高级描述如下:生成随机盐,将其附加到用户输入,通过安全哈希算法(例如SHA-256)运行结果,并存储盐和散列结果。 然后检查登录名:从数据库中检索盐和哈希,将盐附加到用户的输入中,对结果进行哈希,然后与数据库的结果进行比较。 但是,请注意定时攻击。 一旦遇到不匹配,一些比较算法就会停止运行。 不管输入有多接近,“安全”比较器都应始终花费相同的时间运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM