扯蛋的密码规则

原文: Password Rules Are Bullshit
作者: Jeff Atwood
译者:陆其明,爱奇艺公司技术总监,拥有10多年的软件技术研发和管理经验。已经出版的著作有《DirectShow开发指南》、《DirectShow实务精选》、《Windows Media编程导向》、《脚本驱动的应用软件开发方法与实践》,译作有《代码之道》、《高效能程序员的修炼》、《程序员的修炼——从优秀到卓越》。

在很多很多关于密码的糟糕事情中,你知道最扯的是什么吗码规则!

2015年8月11日,我曾在twitter上说过:“在我的有生之年,如果我们没有帮用户解决密码问题,我死后变成鬼,也要缠着你!”

今日我再提让这句誓言,想让它成为互联网上的永久记录。我不知道是否有来世,但我很快就会知道的,我打算如地狱恶魔般出来游荡……

这世界充斥着糟糕透顶的密码规则(例如:https://github.com/duffn/dumb-password-rules)。唉,不提也罢!你越是使用真正随机的密码产生工具(想必我们这样的极客都在用吧),你越有可能在这种机制下承受过巨大的痛苦,而且这种痛苦日复一日地还在继续。

在xkcd.com上看过这样一幅关于密码的漫画吗/p>

图片描述

下面这个8字符的密码又怎么样/p>

图片描述

亲,我们的老朋友Unicode又来捣蛋了!瞧瞧这个:

图片描述

他们孜孜不倦地摧残着我开发的软件,简直无孔不入。是的,没错,我知道你们极客非常清楚“熵”的概念(注:熵的本质是一个系统“内在的混乱程度”)。但是,在一个Unicode和表情符的世界里,把你们对熵的热爱表达成下述稀奇古怪、糟糕透顶的密码规则,真是凭空想象出来的一个巨大错误!

  • 必须包含大写字母
  • 必须包含小写字母
  • 必须包含一个数字
  • 必须包含一个特殊字符

在我们开发Discourse.org的时候,我发现,登录框是非常复杂的一块代码,尽管它的界面看起来很简单。我们采用的主要密码规则也是最简单的,就只有长度要求。从最初的开发到现在,我们已经把密码的最小长度要求从8字符提升到10字符。如果你有幸成为管理员或版主,我们还决定密码长度最少必须15个字符。

我同时也主张,拿用户的密码跟10万个最常用的密码进行比对。如果你看一看2016年被曝光的1000万个密码,你会发现用得最多的前25个密码是:

纵然这份数据泄漏了一些ASCII中心主义。我想,数字在任何文化里都是相同的,但我难以相信普通的中国人会选择“password”、“qwertyuiop”或“mynoob”作为密码。因此,上面这份清单必然还会因地区而异。

(一个有趣的想法是,在长密码里去检索匹配常用的较短密码,不过,我觉得这会产生太多的误报。)

如果你再次检视这份数据,不难得出一个支持密码长度的结论。请注意,在最常用的25个密码中,只有5个超过10字符。因此,如果我们要求密码长度至少是10,就已经把上黑榜的几率降低了80%。我最早是在为Discourse.org做调研时意识到这一点的,那时我收集了数百万个泄漏出来的密码,然后把这份清单过滤到只剩下满足我们新的最低要求(10个字符或更长)的那些密码,真的是寥寥无几了!

图片描述

我有点难过,因为我们曾经毫不介意用户选择像“aaaaaaaaaa”这样的10字符长度的密码。在我看来,最简单的解决方法是设定一个像“总共y个字符中至少需要x个唯一字符”的规则。在Discourse.org的beta版里,我们就是这么干的。如果你有更好的主意,欢迎留言给我。越简单清晰,越好!

5. 拒绝特殊密码

我感到羞愧难当,但我还是得承认:我们在早期开发Discourse.org登录模块的时候,忽视了必须要阻止的两种常见情况:

  • 密码与用户名相同
  • 密码与email地址相同

与此类似,你可能也应该阻止其他的特殊情况,比如:

  • 密码等同于URL或网站域名
  • 密码等同于App名字

简而言之,试着跳出密码输入框去思考,就像用户那样。


相关阅读:

  • 扯蛋的密码规则
  • 软件能促进社会和谐
  • 软件开发不可与建筑类比
  • Scrum是用来发现问题的
  • 单单Scrum是不够的
  • 每日站会是在浪费时间…吗/li>
  • 敏捷虽好勿盲从
  • 敏捷实施时的五个不当做法

相关资源:世新砸蛋抽奖软件V2.3.10官方安装版-其它代码类资源-CSDN文库

来源:钱曙光

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年2月27日
下一篇 2017年2月27日

相关推荐