可能重复:
Why aren’t original passwords stored?
如果密码是数据中价值最低的部分,那么为什么要在数据库中存储加密的用户密码呢?它似乎不会影响外部攻击;为每个帐户设置每天有限的登录尝试次数将是有效的。这似乎不会影响内部攻击;如果有人可以访问密码,他们也就可以访问数据库其余部分中更有价值的数据。
我是不是漏掉了什么?是否应该使用用户密码作为密钥对整个数据库进行加密,以使密码加密本身有效?
下面是他的帖子和他的问题:
好吧,我问这个问题的方式不太好。让我换个说法。
如果有人闯入这个系统,他们拥有用户密码的事实是我最不关心的问题之一。我将加密密码,但以我的浅见,数据库中的其他数据更有价值。假设内部攻击者拥有这些数据,他们并不关心密码。
如果数据库中的其他内容都没有加密,而数据库中的其他内容都是攻击者真正想要的,那么加密密码真的能解决任何问题吗?
发布于 2010-07-09 21:36:38
因为,散列密码将保护它免受来自组织内部的攻击。这样,有权访问数据库的人就不会知道用户的密码。
人们习惯一遍又一遍地使用相同的密码,因此,如果您的数据库意外泄露,您的组织将不会使用户的其他帐户包含在其他组织中。现在,如果有人这样做,不,但他们确实这样做了,而且散列密码要容易得多,这比向您的客户解释为什么有人在内部获得密码并导致其他系统中与您无关的几个帐户损坏要容易得多。
如果你认为这个原因太夸张了,你可能想知道它实际上发生在堆栈溢出创建者Jeff Atwood身上。他在他的博客帖子"I Just Logged In As You: How It Happened"中描述了整个堆栈溢出是如何被破坏的。
编辑:
为了进一步回答你的问题,你的其他敏感数据也应该加密。许多网络攻击都是在工作中发生的,我不想这么说,但你必须对谁能看到什么信息持偏执态度。任何你认为敏感的东西,如果你不想让人们知道,除非他们被特别授权查看这些数据,那么就应该在数据库中加密。你是对的,有时候你并不太关心密码是否可以被窃取。关键是“对你来说”。它是给其他人的,应该与系统中的其他敏感数据一起受到保护。
发布于 2010-07-09 21:37:25
如果您有SQL注入漏洞,有人窃取了您的数据库,并使用您存储的用户名、电子邮件地址和明文密码直接登录到您的用户的电子邮件帐户、银行帐户等。您真的要承担这一责任吗?相反,您真的想承担起能够以明文形式查看用户密码的责任吗?
发布于 2010-07-09 21:41:12
原因:
你不会希望发生这种事的。
如果您可以访问某人的电子邮件帐户,您可以向受害者的各种服务等请求发送忘记的密码。
https://stackoverflow.com/questions/3213068
复制相似问题