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

本文关键字:用户 安全 登录 系统 从头开始 NET 一个 ASP 创建 | 更新日期: 2023-09-27 18:06:53

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

我有一个与Mongo DB工作的网站…但该网站似乎已经实现了自动生成的用户登录系统,并以某种方式更改了设置,以便将用户登录数据存入Mongo数据库。与其信任微软来处理所有的事情,我更愿意基于我自己的库来构建一个用户登录系统(最终目标是尽可能多地用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);

在检查时产生元数据中指定的函数。

我只是应该从工作网站复制设置,我有,直到它自动工作,或者有一种方法来手动再现用户登录系统?是否不可能从生成的代码中对过程进行逆向工程?是否有关于从头开始创建安全用户登录系统的最佳实践的教程或指南?

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

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