0

我正在开发一个银行演示应用程序。在我所在的地区,用户登录他们的银行网站并根据他们拥有的两个字段进行一些交易(您可以假设两个密码——我们称之为 cvv2 和 Second-Password)。这两个密码仅用于互联网或移动交易。

我确信他们不会将这些密码保存在数据库中;因为如果他们将这些密码保存在数据库中,那么数据库管理员可以在没有真实用户许可的情况下使用它们并进行虚假交易。

顺便问一下,当银行及其网站没有将这些密码保存在数据库中时,银行及其网站如何验证用户身份并检查输入的字段(这两个密码)是否正确。

4

2 回答 2

0

今天的大多数银行系统不依赖简单的密码,它们有一个两因素身份验证。例如,这可能是一个使用您的信用卡生成代码的独立设备,或者至少是一个 TAN 列表。

当他们存储密码(通常与其他安全措施结合使用)时,您可以确定他们存储了密码的哈希值。哈希是单向的,您无法从中取回原始密码。用于存储密码的良好哈希算法是 BCrypt、PBKDF2 或 SCrypt,因为它们提供了成本因素。如果您有兴趣阅读有关该主题的更多信息,可以查看我的关于安全存储密码的教程。

于 2015-02-21T17:55:10.213 回答
0

我对此并不陌生,但找到了一种不将密码存储在数据库中并仍然对用户进行身份验证的方法。

您可以创建用户名和密码的有效负载,例如“用户名 + 密码”,然后使用 bcrypt 或任何其他算法对其进行哈希处理。

将此哈希与用户名字段一起存储在数据库中。这样,密码将不会存储在任何地方。

下次您要进行身份验证时,您可以获取用户名和密码并从中生成哈希值并匹配数据库中存在的值。只有正确的密码才会产生相同的哈希值。

如果我错了并且存在缺陷,请纠正我。

于 2021-12-01T12:04:37.153 回答