首页 > 解决方案 > 使用 JavaScript 使用随机盐散列密码并从 C# 验证

问题描述

我想让 asp.net web 应用程序的密码维护过程变得强大。请验证我的想法是否可行。如果是,那么请建议示例代码或链接来实现。否则建议我如何安全地将密码从浏览器发送到服务器并存储在哈希中。

注意:为了安全起见,我已经在使用 TLS (SSL)。

脚步:

  1. 注册用户时,在客户端浏览器中使用 JavaScript 中的随机盐对用户密码进行哈希处理。
  2. 提交表格。
  3. 服务器端代码将哈希存储在数据库中。
  4. 当用户尝试登录时,在客户端浏览器中使用来自 JavaScript 的随机盐对用户密码进行哈希处理。
  5. 提交表格。
  6. 使用登录密码哈希验证数据库存储的哈希。(我认为由于随机盐,两个哈希会有所不同,但验证功能将能够比较它)

标签: javascriptc#hash

解决方案


这是不安全的。散列和加盐应该是服务器提供的隐藏实现秘密,而不是客户端。由于客户端拥有实现机密,因此如果有人可以访问您的数据库,他们可以对您的安全模型进行逆向工程。

HTTPS 将保护传输中的密码。我也会避免滚动您自己的身份验证系统,因为有很多“陷阱”。ASP.NET Framework 和 Core 都为身份验证提供了强大的模式和实现。


推荐阅读