首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码安全性:数据库连接密码与存储用户密码

密码安全性:数据库连接密码与存储用户密码
EN

Stack Overflow用户
提问于 2014-03-22 00:37:26
回答 3查看 907关注 0票数 3

在过去的几天里,我读了很多关于密码安全的文章。这些帖子通常有很长的评论线索,这使得很难确定一个明确的答案。

一般来说,似乎推荐的做法是:

  • 将数据库连接密码存储在文档根上方的单独配置文件中。此文件不受版本控制,并受文件系统权限的保护。
  • 使用经过验证的安全散列算法对每个密码使用唯一的salt哈希用户密码。

我不想重述(双关意)之前已经问过和回答过的问题。所以我不想深入到如何保护密码的细节。

我想要理解的是,如果将数据库连接密码存储在纯文本中是可以接受的,那么为什么会有这么多关于如何使用户密码安全的讨论(和分歧)。

为什么存储在数据库中的密码比保存连接密码的配置文件更易受攻击?攻击者不需要访问我的系统才能从我的数据库中获得用户密码吗?

在我的例子中,我在CentOS上使用PHP/MySQL,但是这个问题也适用于其他环境。

EN

回答 3

Stack Overflow用户

发布于 2014-03-22 06:23:58

我想要理解的是,如果将数据库连接密码存储在纯文本中是可以接受的,那么为什么会有这么多关于如何使用户密码安全的讨论(和分歧)。

有这么多的分歧有三个原因。首先,讨论通常缺乏威胁模型。第二,对于什么是威胁,意见不一。第三,对于如何应对特定的威胁,意见不一。因为威胁还没有很好的定义,所以人们忽略了一些威胁,把他们的观点抛到了其他人身上。

OWASP的John编写了一个关于服务器、密码、安全性和存储的好文档。它通过攻击和威胁,然后增加步骤,以消除威胁。以下是对OWASP材料的参考:

所以我不想深入到如何保护密码的细节。

好吧,在你有了一个威胁模型之后,魔鬼就在细节里了。

为什么存储在数据库中的密码比保存连接密码的配置文件更易受攻击?

这取决于很多事情。例如,如果管理员可以访问配置文件,然后离开公司,该怎么办?或者如果您将数据库备份发送到场外呢?你的威胁模型里有这些威胁吗?

攻击者不需要访问我的系统才能从我的数据库中获得用户密码吗?

你需要一个定义明确的威胁模型。

再说一次,离开公司的管理员怎么样?他可以访问所有的密码。

或者去外地的后援怎么样?快递员和网站工作人员可以访问密码。

或者用一个FISA字母来检查所有的用户名和密码。拉瓦比特关闭是因为政府要求所有的东西,而不是他们感兴趣的用户的密码和钥匙(爱德华·斯诺登)。

所有这些威胁都不涉及远程攻击者试图侵入您的系统。

攻击者不需要访问我的系统才能从我的数据库中获得用户密码吗?

一切都是平等的,不。坏蛋们会试着屈从于你的用户,因为这是最简单的。

有关密码的更多阅读(仅限于存储),请参阅Peter的工程安全。你知道使用密码复杂性策略是个坏主意吗?如果密码在N天后过期是个坏主意?古特曼的书告诉你为什么,并引用了相关的安全研究。

票数 1
EN

Stack Overflow用户

发布于 2014-03-22 07:58:51

考虑攻击者检索密码时通常需要哪些漏洞:

  • 用户密码存储在数据库中,通常是通过SQL注入泄漏的。根据密码的存储方式,攻击者可能需要一些其他步骤才能检索密码。
  • 数据库密码通常存储在文件中,因此读取文件需要读取/包含文件或执行代码/命令。

但访问数据库通常仅限于特定的网络或机器,即web服务器。因此,攻击者至少需要在web服务器上执行代码/命令才能访问数据库。如果攻击者能够在web服务器上执行任意代码/命令,则web服务器已经完全受损。

票数 0
EN

Stack Overflow用户

发布于 2014-03-22 21:12:44

有几个原因,为什么要保护用户密码而不是数据库连接密码:

  1. 用户密码可以使用单向哈希函数保护,而不可能以同样的方式保护连接密码,应用程序最终需要这个密码明文来打开数据库。
  2. 对于攻击者已经窃取密码哈希的情况,应该保护用户密码。
  3. SQL注入是获取用户密码散列的简单方法,您不需要服务器上的特权。要获得连接密码,您需要服务器特权,这要困难得多。如果您感兴趣,我制作了一个演示页来展示它是多么容易。
  4. 一个泄漏的用户密码可以也危及其他网站的,因为人们在多个站点上重复使用相同的密码。
  5. 还有其他方法可以丢失用户密码散列,丢弃备份,忽略服务器,.通常这种方式不受您的控制(外部提供者、外部开发人员)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22571908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档