我一直认为将密码作为纯文本存储在数据库中(正如其他人所说的那样)是一件非常糟糕的事情。
从历史上看,我们的大多数服务器端编码需求已经签约给一组程序员。它们以纯文本形式在MySQL数据库中存储密码。
作为常驻代码猴子(顺便说一下,第一个在这里工作的服务器端精明的猴子,所以我继承了地球,可以这么说)我有胃的这个坑感觉它是我的屁股将是当这个纯文本废话被利用时就行了。
我试着向我的老板解释一下非常糟糕的纯文字密码是什么,但是我突然意识到:我不认为我真的知道为什么他们这么糟糕。除了将黑客的密码列表交给银盘外,还有更多内容吗?这听起来对我来说已经够糟了,但是在la-la land,我们的网站是“安全的”并且不受任何黑客攻击,这个论点似乎并没有削减它。我如何说服(或吓唬)我的老板在他珍贵的网站上要求散列?
答案 0 :(得分:63)
在军队中,它被称为“深度防御”。理论是你可以硬化每一层,而不是只加固一层并希望它足够。
我听说像你这样的数据库叫做“外面坚硬,里面柔软而有嚼劲”。专用黑客有一百万种方式可以访问您的数据库。社会工程,一个心怀不满的员工,一个决定看他的登录是否仍然有效的前雇员,或者他写的后门仍然在那里,一个错过的操作系统补丁...列表继续。
如果一个坏角色通过这些方法获得访问权限,而不仅仅是获取数据,他可以访问系统中每个用户的每个用户名/密码组合,并且正如有人指出的那样,人们经常使用相同的组合为每个网站。所以你的黑客出去并拥有数百人的Paypal,电子邮件和银行账户。
我画了一幅令人毛骨悚然的画面吗?
答案 1 :(得分:29)
请他考虑在许多公司中,安全问题来自内部而非外出。
现在问他如何向他的客户解释黑客是否曾在下次因某种原因解雇某人时窃取了他们的密码(这无疑是他们在其他地方使用过的)。
还要问他,他认为他的客户有多想知道他们的密码对任何拥有数据库读取权限的人都是可见的。
答案 2 :(得分:12)
以下是一些原因:
答案 3 :(得分:8)
您可能希望指出,如果信息遭到破坏,未能妥善保护帐户可能会使公司承担法律责任。如果用户的数据因公司的行为(或不采取行动,视情况而定)而暴露,则忽略已知漏洞可能会导致您收取法律费用。
在美国,某些类型的数据,例如财务和医疗信息,公司在法律上必须保持安全和私密。不这样做会产生严重后果。在这方面我不熟悉其他国家的法律,但如果你的公司正在处理这些数据,这是值得研究的。
答案 4 :(得分:6)
除了安全隐患之外,我想知道如果客户发现公司的每位员工都可以访问密码,他们会说些什么。当涉及可能的泄漏时,如果出现以下情况,密码将面临风险:
每隔一段时间,您就会听到以明文形式存储敏感信息的企业,而且它永远不会结束。我们都是人,容易出错,在安全方面你不能假设完美。你不会发现任何大型的,有利可图的公司为任何可以避免的风险留出空间,因为任何可能发生的坏事都会发生......
答案 5 :(得分:5)
如果'将你的破解者放在银盘上的密码列表'不是一个足够好的理由,那么什么构成一个足够好的理由呢?
答案 6 :(得分:4)
有太多的数据库使用纯文本密码被盗:如果it can happen to reddit,可能会发生这种情况。
答案 7 :(得分:3)
如果您的组织符合PCI-DSS要求(例如接受信用卡的商家),则不允许使用明文密码。参见PCI DSS 8.4项。
如果您的组织是由FDIC投保的金融机构,则不允许使用明文密码(参见FDIC FIL 69 2001)。
如果您希望获得ISO / IEC 27001认证,密码应在传输和静止时加密,例如:如果你与某些政府机构合作。
答案 8 :(得分:1)
我在这个问题上看到的两个好的答案是:
您可以保护密码不被窥探员工,即有合法访问数据库的人,如果他们有这种倾向,就不能轻易窃取密码,
应用程序逻辑漏洞,例如网站前端的SQL注入漏洞,将导致妥协的可能性降低。
在我看来,加密数据库密码是一个好主意(虽然我还没有为我的大多数应用程序做这件事),但更重要的是要确保你的数据库服务器尽可能防弹。关于网络和授权访问。如果攻击者可以访问您的数据库,那么无论您如何存储密码,他们都可以破解它们。