我写了个 Chrome 插件,让你再也不用重置密码
你一定经历过这个循环:
- 打开某个网站,输入你记忆中的密码
- “密码错误”
- 好吧,点”重置密码”
- 邮箱收验证码,输入新密码
- “密码必须包含大写字母!”
- 行,加了一个大写字母
- “不能与之前的密码相同。”
- ……
你的记忆力没有问题。 问题出在每个网站的密码规则都不一样:Chase 银行要求 8-32 位、必须有大小写+数字+特殊字符、特殊字符还只能用 ! @ # $ % ^ & * ( ); GitHub 要求至少 8 位或者 15 位以上(两套规则); Apple 要求不能有超过 3 个连续相同字符; PayPal 的上限是 20 位……
你根本不是忘了密码,你是忘了这个网站的密码规则是什么。
问题的本质
仔细想想,这件事非常荒谬:
每个网站都知道自己的密码规则是什么,但它们只在你注册或重置密码时才告诉你。
你平时登录的时候,密码框旁边什么提示都没有。你输入记忆中的密码 → 错了 → 再试一个 → 还是错 → 你已经不记得当初注册的时候被哪条奇葩规则逼着改了什么。只有当你放弃登录、点了”重置密码”之后,网站才在设置新密码的页面上列出所有规则。
但问题是:如果你在登录的时候就能看到这些规则,你大概率能一次就想起来正确的密码。 因为你的密码库通常就那么几套模板,区别只是有没有大写、有没有特殊字符、长度是多少。知道了规则,你自然就能回忆起当初用的是哪一套。
Don’t Reset Password
基于这个想法,我做了一个 Chrome 扩展:Don’t Reset Password。
它做的事情非常简单:
- 自动检测密码输入框
- 从一个社区维护的规则数据库中查找当前网站的密码规则
- 在输入框下方直接显示:最小长度、最大长度、是否需要大写、是否需要特殊字符、允许哪些特殊字符……
就这样。没有其他功能了。
关于隐私
我知道你在想什么——”一个读取密码框的插件?”
所以我要把这件事说清楚:
- 不读取、不存储、不传输你的密码。 插件只是在密码输入框旁边显示一段提示文字,它不需要也不会访问你输入的内容。
- 不需要注册账号。 零个人数据。有一个匿名 ID 用来防止垃圾贡献,仅此而已。
- 规则本身是公开信息。 “密码必须包含大写字母”不是秘密,这是网站在你注册或重置密码时本来就会告诉你的东西——只不过在你正常登录的时候它不会显示。
代码完全开源,你可以自己审计。
社区驱动
一个人不可能覆盖所有网站的密码规则。所以这个规则数据库是社区众包的——任何人都可以贡献自己知道的网站规则,所有人都受益。
目前已经覆盖了 30 多个常见网站( Google 、GitHub 、Apple 、Chase 、PayPal 、Steam 、淘宝等),但显然还远远不够。如果你在使用中发现某个网站的规则缺失,点一下就可以贡献。
为什么要写这个
说实话,这个工具的技术含量不高。它没有用到什么高深的算法,没有 AI ,甚至连后端都很简单。
但我觉得它解决了一个真实的、每天都在发生的、所有人都遇到过的问题。而且解决方案如此简单,简单到让人奇怪为什么之前没有人做。
最好的工具不是最复杂的工具,而是让你觉得”这不是理所应当的吗?”的工具。
不用重置密码正确的方法难道不是不用密码吗? 那不是通行密钥 passkey 吗?