我应该强制我的用户每 n 天/周/月更改密码吗?

Izn*_*ood 20 mysql password web-applications

问题说明了一切。我们正在设计一个安全性非常重要的系统。有人的想法之一是强制用户每 3 个月更改一次密码。我的看法是,虽然它更安全,因为密码经常更改,但它也迫使我们的用户记住不断更改的密码,并使他们更有可能将其写在某处以帮助记住。

同样的想法是强制用户使用超级难猜的密码真的很好。强制他们使用 ?%&% 和大写小写字母。我知道发明这样一个密码然后记住它很麻烦。

再说一次,我们不希望任何人使用 12345。

所以。有没有关于这个主题的白皮书?好习惯?

我说的是用 PHP 创建的网站。如果有任何改变,则在灯环境中使用 MySQL。

小智 29

我认为在这方面我可能属于少数(基于我在学校和工作中与 IT 部门打交道的有限经验),但我认为强制性的、基于时间的密码更改策略充其量是毫无价值的,最糟糕的是有害。人们往往非常不擅长选择好的密码和保密。密码过期策略旨在通过限制任何一个密码可以被破解/社会工程/被盗的时间来缓解这种情况;然而,他们在实践中未能做到这一点,主要是因为他们迫使用户不断地重新学习他们的密码。通过让用户更难将他们的密码提交到记忆中,您最终会导致他们中的许多人选择较弱的密码,和/或将他们的密码写在窥探者可以找到的地方。

此外,当被迫定期更改密码时,许多用户会选择遵循非常容易识别的模式的密码,例如[base string][digit]. 假设用户想要使用他们猫的名字 Fluffy 作为他们的密码。他们可能会用密码开出fluffy,然后将其更改为fluffy1fluffy2fluffy3等等。在这种情况下,该策略并没有真正帮助安全;即使用户选择了比 更安全的基本字符串fluffy,并且即使他们安全地记住了他们的密码,每几个月更改一次的单个后缀字符对缓解破解或社会工程攻击几乎没有作用。

另请参阅:Password Expiration Considered Harmful,一篇短文(不是我写的),我认为它很好地介绍了这些问题。

  • 您可以通过要求历史密码多样化来防止密码策略中的第二点。 (2认同)
  • @bcat :Linux 通过 PAM(可插拔身份验证模块)使用这种类型的验证,允许用户在系统内更改密码的实用程序首先请求他们的当前密码,以便可以根据新密码进行判断。 (2认同)

Mat*_*cel 14

我的大型组织(15000 多个用户)在 2009 年秋季每 120 天实施一次“密码更改”。这是一个巨大的 IT 头痛和支持资源浪费。每次 120 天的时间窗口滚动时,我们都会有成千上万的用户被迫更改他们的密码......他们中的许多人要么做错了并锁定了他们的帐户......要么第二天忘记了。尽管我们尝试尽可能多地提供自助服务,但我们的帮助台还是被密码呼叫淹没了。

如果您希望您的用户/客户讨厌您……并且您的前线 IT 人员一有机会就将您烧死……实施密码更改。

密码更改策略是某些 IT 经理如何在某处预订的复选框……它是 15 年前编写的。真正实施或支持该政策的战壕中的任何人都不会告诉您这是一个好主意。

我在这里争论的是“密码短语”而不是密码……确实有很多好处……隧道尽头的那盏灯是迎面而来的火车。:)

密码短语是一个几乎无法猜测的长字符串,很容易记住,例如“MyCatIsFromSpainAndICallHimElGato”。或者也许是一首诗或一首歌中的一句话。

如果你想让它真的很难破解....弄乱案例,添加一些标点符号,将一些标点符号更改为 ells,将 ohs 更改为 0,将 a 更改为 @ 等...但请记住它... .那是关键。甚至还有一些方法可以选择它们,这样它们就可以轻松地从您的手指流到键盘上……这样您就不会在双手之间或用 SHIFT 和奇怪的标点符号来回弹跳。

所以...

  • 使用长的“密码短语”。
  • 在内部测试它们的强度。
  • 在整个基础架构中实施“单点登录”,这样客户每天只需使用一两次。
  • 永远不要强迫他们改变它。
  • 并教育,教育,教育他们的正确使用。

马特

编辑: 2011 年8 月 24 日XKCD同意并说得比我好。


Dam*_*isa 10

不。我个人认为这是不必要的,甚至适得其反。我在我的博客上咆哮,但如果你有兴趣,你可以找到它。

简而言之,归结为两个原因:

1. 强迫用户不断更改密码会导致密码错误。

这方面不乏轶事证据,但如果我被迫每 x 天记住一件新事物,我会让这些事情容易记住,并且可能彼此相关,这是有道理的。

如果用户知道很快就会更改,他们更有可能选择“可猜测”的密码,例如“Jan2010”或“Password05”。对字符执行严格的策略很可能只会导致添加感叹号或完整拼写的名称,而不是缩写。技术上复杂的密码和不会被猜到的密码之间有很大的区别。

2. 强制定期更改密码并不能阻止攻击,它只会降低风险(并不会降低多少)

想一想 - 如果您的密码以某种方式被猜测或发现,攻击者需要多长时间才能使用该信息?让自己站在攻击者的角度。您刚刚发现了一个密码。您是否不会登录并立即提取所有信息,以防万一有人发现?在 30 天的时间里,你已经拥有了你想要的一切。

我的建议:

  • 强制使用极其严格的密码策略(例如 15 个字符,包含大写、小写、数字和特殊字符,没有英文单词 > 3 个字符)
  • 永远不要让用户更改他们的密码。如果他们必须将密码写在一张纸上并将其保存在钱包中,那实际上很好。人们擅长保护纸片,但不太擅长记住随机字符串。