在过去的几天里,我读了很多关于密码安全的文章。这些帖子通常有很长的评论线索,这使得很难确定一个明确的答案。
一般来说,似乎推荐的做法是:
我不想重述(双关意)之前已经问过和回答过的问题。所以我不想深入到如何保护密码的细节。
我想要理解的是,如果将数据库连接密码存储在纯文本中是可以接受的,那么为什么会有这么多关于如何使用户密码安全的讨论(和分歧)。
为什么存储在数据库中的密码比保存连接密码的配置文件更易受攻击?攻击者不需要访问我的系统才能从我的数据库中获得用户密码吗?
在我的例子中,我在CentOS上使用PHP/MySQL,但是这个问题也适用于其他环境。
发布于 2014-03-22 06:23:58
我想要理解的是,如果将数据库连接密码存储在纯文本中是可以接受的,那么为什么会有这么多关于如何使用户密码安全的讨论(和分歧)。
有这么多的分歧有三个原因。首先,讨论通常缺乏威胁模型。第二,对于什么是威胁,意见不一。第三,对于如何应对特定的威胁,意见不一。因为威胁还没有很好的定义,所以人们忽略了一些威胁,把他们的观点抛到了其他人身上。
OWASP的John编写了一个关于服务器、密码、安全性和存储的好文档。它通过攻击和威胁,然后增加步骤,以消除威胁。以下是对OWASP材料的参考:
所以我不想深入到如何保护密码的细节。
好吧,在你有了一个威胁模型之后,魔鬼就在细节里了。
为什么存储在数据库中的密码比保存连接密码的配置文件更易受攻击?
这取决于很多事情。例如,如果管理员可以访问配置文件,然后离开公司,该怎么办?或者如果您将数据库备份发送到场外呢?你的威胁模型里有这些威胁吗?
攻击者不需要访问我的系统才能从我的数据库中获得用户密码吗?
你需要一个定义明确的威胁模型。
再说一次,离开公司的管理员怎么样?他可以访问所有的密码。
或者去外地的后援怎么样?快递员和网站工作人员可以访问密码。
或者用一个FISA字母来检查所有的用户名和密码。拉瓦比特关闭是因为政府要求所有的东西,而不是他们感兴趣的用户的密码和钥匙(爱德华·斯诺登)。
所有这些威胁都不涉及远程攻击者试图侵入您的系统。
攻击者不需要访问我的系统才能从我的数据库中获得用户密码吗?
一切都是平等的,不。坏蛋们会试着屈从于你的用户,因为这是最简单的。
有关密码的更多阅读(仅限于存储),请参阅Peter的工程安全。你知道使用密码复杂性策略是个坏主意吗?如果密码在N天后过期是个坏主意?古特曼的书告诉你为什么,并引用了相关的安全研究。
发布于 2014-03-22 07:58:51
考虑攻击者检索密码时通常需要哪些漏洞:
但访问数据库通常仅限于特定的网络或机器,即web服务器。因此,攻击者至少需要在web服务器上执行代码/命令才能访问数据库。如果攻击者能够在web服务器上执行任意代码/命令,则web服务器已经完全受损。
发布于 2014-03-22 21:12:44
有几个原因,为什么要保护用户密码而不是数据库连接密码:
https://stackoverflow.com/questions/22571908
复制相似问题