Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在数据库中不保存密码的情况下对用户进行身份验证_Security_Authentication_Passwords_Onlinebanking - Fatal编程技术网

Security 如何在数据库中不保存密码的情况下对用户进行身份验证

Security 如何在数据库中不保存密码的情况下对用户进行身份验证,security,authentication,passwords,onlinebanking,Security,Authentication,Passwords,Onlinebanking,我正在开发一个银行演示应用程序。在我所在的地区,用户登录到他们的银行网站,并根据他们拥有的两个字段进行一些交易。您可以使用两个密码——我们称之为cvv2和第二个密码。这两个密码仅用于互联网或移动交易 我确信他们不会将这些密码保存在数据库中;因为如果他们将这些密码保存在数据库中,那么数据库管理员就可以使用它们并在没有真正用户权限的情况下进行虚假交易 顺便说一句,问题是银行及其网站如何验证用户身份,并检查输入的字段,当用户未将这些密码保存在数据库中时,这两个密码是否正确 如今,大多数银行系统都不依赖

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

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


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

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


当它们存储密码时,通常与其他安全措施结合使用,那么您可以确保它们存储了密码的散列。散列是单向的,您无法从中获取原始密码。用于存储密码的好的散列算法是BCrypt、PBKDF2或SCrypt,因为它们提供了成本因素。如果您有兴趣阅读更多有关此主题的信息,可以查看我的abour安全存储密码。

当然,密码以某种方式存储在数据库中。身份验证将如何进行。银行业务与生活的其他部分一样,是基于信任的。根据PCIDSS,银行系统不应在数据库中存储字段、字段的某些部分或字段的任何组合。加密它们。但是他们是存在的,作为一名内部人员,如果dba只是执行sql查询,那么问题可能会被打断。如果我们存储哈希,那么问题就不会得到解决。因为我们仍然在用数据库中的哈希值检查用户输入的密码的哈希值。所以db admin可以创建假请求并发送散列,这样checker函数就无法确定真正的用户是否发送了它not@HuseinBehbudiRad-不,他不能。checker函数需要原始密码并自行计算哈希值,然后比较哈希值。由于几乎不可能找到导致相同哈希的密码,管理员无法发送假请求。