【问题标题】:Hash passwords using crypto and then save to database使用加密散列密码,然后保存到数据库
【发布时间】:2015-09-17 01:50:32
【问题描述】:

目前我有这个代码

    // POST: users/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "id,naam,wachtwoord,email,isadmin")] user user)
    {
        user.wachtwoord = Crypto.HashPassword(user.wachtwoord);
        if (ModelState.IsValid)
        {
            db.users.Add(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(user);
    }

现在如果我使用 user.wachtwoord=crypto.hashpassword 就会中断

现在我的问题是,在这种情况下,通过 httppost 方法保存用户密码的正确方法是什么,以及我以后如何在登录控制器上取消密码?

问候

【问题讨论】:

  • 您想自己做这件事,还是如果您使用 ASP.NET Identity Framework 会更好吗?另外,错误信息是什么?
  • 加密是没有意义的,除非通信方法也被加密。在 HTTP 中加密通信的唯一方法是 HTTPS。所以你应该使用 SSL。
  • 您是在询问如何对密码进行哈希处理以存储在数据库中如何将密码从客户端浏览器传输到 Create Action 方法?
  • euhm 我试图散列他们在创建操作中发送的明文,因此它的明文 > 散列 > MS SQL DB,然后在登录功能上,它应该检查散列是否等于数据库中的散列跨度>

标签: c# asp.net sql-server asp.net-mvc


【解决方案1】:

如果您想实现自定义解决方案,可以是:使用带盐的单向散列算法并将该值作为用户密码存储在用户表中。 您不会在登录控制器上“取消散列”密码,而是将用户在登录控制器中提供的密码与 salt 进行散列,然后与数据库中的密码(或保存的存储库中的密码进行比较)用户凭据)。

【讨论】:

  • 任何我可以看到的示例或链接,因为我正在为大学做这件事,但我无法弄清楚
  • 你可以参考crackstation.net/hashing-security.htm,例如,还有一些代码示例来说明如何实现它。
【解决方案2】:

为什么不考虑 ASP.NET Identity?开箱即用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 2016-03-15
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多