如果密码是数据中价值最低的部分,为什么会将加密的用户密码存储在数据库中?它似乎不会影响外部攻击;每个帐户每天设置有限数量的登录尝试将是有效的。它似乎不会影响内部攻击;如果有人可以访问密码,他们也可以访问数据库其余部分中更有价值的数据。
我在这里遗漏了什么吗?是不是应该使用用户密码将整个数据库加密,作为密码加密本身有效的密钥?
将他的帖子与他的问题结合起来:
好的,我以一种糟糕的方式问了这个问题。让我重新说一下。
如果有人闯入这个系统,他们拥有用户密码的事实是我最关心的问题之一。我将加密密码,但在我看来,数据库中的其他数据更有价值。假设如果内部攻击者拥有该数据,则他们不关心密码。
如果数据库中没有其他内容被加密,数据库中的其他所有内容都是攻击者真正想要的,那么加密密码实际上是否可以解决任何问题?
答案 0 :(得分:26)
因为哈希密码可以保护它免受组织内部的攻击。这样,有权访问数据库的人将无法知道用户的密码。
人们习惯一遍又一遍地使用相同的密码,因此如果您的数据库被意外泄露,您的组织就不会使用户的其他帐户包含在其他组织中。现在,人们应该这样做,不,但他们这样做,并且散列密码要容易得多,而不是向客户解释为什么内部人员掌握密码并对其他系统中的多个帐户造成损害与你无关。
如果您认为这个原因过于夸张,您可能想知道它实际上发生在Stack Overflow创建者Jeff Atwood身上。他在博文"I Just Logged In As You: How It Happened"中描述了整个Stack Overflow是如何被泄露的。
修改强>
为了进一步回答您的问题,您的其他敏感数据也应加密。很多网络工作都在工作中,我讨厌说,但你必须对谁能看到什么信息感到妄想。除非经过特别授权查看数据,否则您认为不需要人们知道的任何您认为敏感的内容都应在数据库中加密。你有时候比较可以窃取的密码并不是你所关心的。关键是“给你”。这是对其他人的,应该与系统中的其他敏感数据一起保护。
答案 1 :(得分:8)
如果您有SQL注入漏洞,有人窃取您的数据库,并使用您存储的用户名,电子邮件地址和明文密码直接登录到您的用户电子邮件帐户银行帐户,该怎么办?你真的想承担这个责任吗?相反,您真的想承担能够以明文方式查看用户密码的责任吗?
答案 2 :(得分:7)
原因:
你不希望发生这种情况。
如果您可以访问别人的电子邮件帐户,您可以请求从受害者的各种服务中发送忘记密码等。
答案 3 :(得分:3)
对于内部攻击,如果我能记住5个用户名/密码组合,那么去公共终端并访问这些帐户,与使用工作机直接编辑数据库或拉动相比,有人会注意到攻击的可能性较小在工作时输出大量数据。
正如其他人所指出的那样,因为我们在网上都有一百个以上的地方都需要不同的密码......很多人很多人一遍又一遍地使用相同的密码。如果威廉姆斯小工具公司丢失了您的姓名,登录名和密码,并且您的银行拥有相同的登录名和密码,并且追踪到Widget公司是谁丢失了您的密码......那里有一些混乱的责任。
答案 4 :(得分:1)
因为你不想陷入发送未加密密码的设计陷阱,或者认为你可以,因为你没有任何未加密的东西可以与之比较,也许。
答案 5 :(得分:0)
好的,我以一种糟糕的方式问了这个问题。让我重新说一下。
如果有人闯入这个系统,他们拥有用户密码的事实是我关心的最少之一。 我将加密密码,但在我看来,数据库中的其他数据更有价值。假设如果内部攻击者拥有该数据,则他们不关心密码
。如果数据库中没有其他内容被加密,数据库中的其他所有内容都是攻击者真正想要的,那么加密密码实际上是否可以解决任何问题?
答案 6 :(得分:0)
保密,诚信,真实,隐私...... 记住你的第一个安全课程,并尝试计算你的问题绕过了多少个论文。
四个?嗯,这取决于对问题的更具体的看法,但不管怎样,不过很远:)
答案 7 :(得分:0)
此外,您不需要知道用户密码。在客户端创建密码哈希是个好主意。根据您所在的位置,存储个人数据和密码时可能存在法律要求。
答案 8 :(得分:-1)
通常,密码的哈希值存储在数据库中而不是原始原始文本中。这是为了确保用户凭据对系统外部攻击的额外安全性。 进行哈希比较以验证用户凭据。
您可能希望阅读更多理论,了解为什么这是为了更好地理解它而遵循的方法。 Wiki可以作为此的起点。
答案 9 :(得分:-1)
存储密码哈希时。不要忘记用某些东西加盐,因此反向查找哈希不会泄露密码。是的,在散列之前使它成为一个长串 我不明白问题的最后一段。遗憾。