当对网站上的用户进行身份验证时,哈希生成和比较应该在数据库还是网站中进行?
我的观点是,网站应将用户提供的密码(可能由Web服务器加密)传递给数据库。然后,数据库使用盐重新加密它并比较散列值。数据库然后向Web服务器响应用户凭据是否有效。这样,最少量的信息离开数据库,基本上只有一个是或否,没有存储的凭据信息。缺点是数据库需要做更多的工作。
另一个观点是应该在Web服务器中完成工作。在这种情况下,Web服务器会创建哈希并请求从数据库中检索存储的哈希值进行比较。在这种情况下,需要将盐从数据库传递回Web服务器以创建哈希。但是,随着Web服务器数量的增加,工作得到了共享。
个人认为第二种方法可能存在安全风险。如果Web服务器被攻击,可以从数据库中请求盐和哈希,并轻松破解它们。
执行上述操作的最佳实践是什么?我有遗漏/错过了什么吗?
谢谢
我的观点是,网站应将用户提供的密码(可能由Web服务器加密)传递给数据库。然后,数据库使用盐重新加密它并比较散列值。数据库然后向Web服务器响应用户凭据是否有效。这样,最少量的信息离开数据库,基本上只有一个是或否,没有存储的凭据信息。缺点是数据库需要做更多的工作。
另一个观点是应该在Web服务器中完成工作。在这种情况下,Web服务器会创建哈希并请求从数据库中检索存储的哈希值进行比较。在这种情况下,需要将盐从数据库传递回Web服务器以创建哈希。但是,随着Web服务器数量的增加,工作得到了共享。
个人认为第二种方法可能存在安全风险。如果Web服务器被攻击,可以从数据库中请求盐和哈希,并轻松破解它们。
执行上述操作的最佳实践是什么?我有遗漏/错过了什么吗?
谢谢