为什么纯文本密码不好,我怎么说服我的老板他的珍贵网站处于危险之中呢?

时间:2009-07-29 00:07:21

标签: passwords plaintext

我一直认为将密码作为纯文本存储在数据库中(正如其他人所说的那样)是一件非常糟糕的事情。

从历史上看,我们的大多数服务器端编码需求已经签约给一组程序员。它们以纯文本形式在MySQL数据库中存储密码。

作为常驻代码猴子(顺便说一下,第一个在这里工作的服务器端精明的猴子,所以我继承了地球,可以这么说)我有胃的这个坑感觉它是我的屁股将是当这个纯文本废话被利用时就行了。

我试着向我的老板解释一下非常糟糕的纯文字密码是什么,但是我突然意识到:我不认为我真的知道为什么他们这么糟糕。除了将黑客的密码列表交给银盘外,还有更多内容吗?这听起来对我来说已经够糟了,但是在la-la land,我们的网站是“安全的”并且不受任何黑客攻击,这个论点似乎并没有削减它。我如何说服(或吓唬)我的老板在他珍贵的网站上要求散列?

  

相关:Encrypting/Hashing plain text passwords in database

9 个答案:

答案 0 :(得分:63)

在军队中,它被称为“深度防御”。理论是你可以硬化每一层,而不是只加固一层并希望它足够。

我听说像你这样的数据库叫做“外面坚硬,里面柔软而有嚼劲”。专用黑客有一百万种方式可以访问您的数据库。社会工程,一个心怀不满的员工,一个决定看他的登录是否仍然有效的前雇员,或者他写的后门仍然在那里,一个错过的操作系统补丁...列表继续。

如果一个坏角色通过这些方法获得访问权限,而不仅仅是获取数据,他可以访问系统中每个用户的每个用户名/密码组合,并且正如有人指出的那样,人们经常使用相同的组合为每个网站。所以你的黑客出去并拥有数百人的Paypal,电子邮件和银行账户。

我画了一幅令人毛骨悚然的画面吗?

答案 1 :(得分:29)

请他考虑在许多公司中,安全问题来自内部而非外出。

现在问他如何向他的客户解释黑客是否曾在下次因某种原因解雇某人时窃取了他们的密码(这无疑是他们在其他地方使用过的)。

还要问他,他认为他的客户有多想知道他们的密码对任何拥有数据库读取权限的人都是可见的。

答案 2 :(得分:12)

以下是一些原因:

  • 有人可能会侵入您的网站。这可能不太可能,这可能不会影响你的老板(我现在可以听到对话:“你是说这个网站不安全吗?”)但它发生了,记住,没有人认为他们的网站老老实实地会被打破......
  • 内部人员(像您一样)随意查看数据库:您可能不会尝试查看任何人的密码,但在正常工作过程中,您可能需要查看包含密码的表格。考虑到许多人使用相同的密码绝对是一切(包括可能是你的老板!),你不希望暴露所有这些密码。问你的老板他是否曾在两个不同的网站上重复使用密码
  • 如果有人发现您的应用程序没有加密密码,他们可能会严重质疑您的应用程序的信任
  • 将密码(最好带有盐)哈希到数据库中基本上没什么代价,为什么不呢?

答案 3 :(得分:8)

您可能希望指出,如果信息遭到破坏,未能妥善保护帐户可能会使公司承担法律责任。如果用户的数据因公司的行为(或不采取行动,视情况而定)而暴露,则忽略已知漏洞可能会导致您收取法律费用。

在美国,某些类型的数据,例如财务和医疗信息,公司在法律上必须保持安全和私密。不这样做会产生严重后果。在这方面我不熟悉其他国家的法律,但如果你的公司正在处理这些数据,这是值得研究的。

答案 4 :(得分:6)

除了安全隐患之外,我想知道如果客户发现公司的每位员工都可以访问密码,他们会说些什么。当涉及可能的泄漏时,如果出现以下情况,密码将面临风险:

  • 数据库由外部公司备份
  • 运行db软件的操作系统存在任何安全风险
  • 任何其他硬件或软件防火墙中的安全漏洞
  • 任何有权访问数据库的用户都会以某种方式获取可能利用数据的病毒
  • 数据库恰好位于被盗的计算机或笔记本电脑上
  • 一名心怀不满的员工被解雇并决定“回来”

每隔一段时间,您就会听到以明文形式存储敏感信息的企业,而且它永远不会结束。我们都是人,容易出错,在安全方面你不能假设完美。你不会发现任何大型的,有利可图的公司为任何可以避免的风险留出空间,因为任何可能发生的坏事都会发生......

答案 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)

我在这个问题上看到的两个好的答案是:

  1. 您可以保护密码不被窥探员工,即有合法访问数据库的人,如果他们有这种倾向,就不能轻易窃取密码,

  2. 应用程序逻辑漏洞,例如网站前端的SQL注入漏洞,将导致妥协的可能性降低。

  3. 在我看来,加密数据库密码是一个好主意(虽然我还没有为我的大多数应用程序做这件事),但更重要的是要确保你的数据库服务器尽可能防弹。关于网络和授权访问。如果攻击者可以访问您的数据库,那么无论您如何存储密码,他们都可以破解它们。