保护用户账号有两道闸——多因子验证负责确认【你是你】,CAPTCHA 负责确认【你是人】;两者都有效,但效果差距极大:抗钓鱼的验证能挡 99% 以上,短信验证码只能挡约 11%。
9-2 到 9-4 讲的都是护住服务器自己,这一节换到护住用户。它和 9-6(内部访问控制)是一对:一个管外面的人,一个管里面的人。教材 9-5 的并列关键词是【多因子验证、CAPTCHA】。
一、多因子验证:三类要素,凑够两类才算数
多因子的道理很朴素——一扇门要多把钥匙才开得动。这三大类要素是:
- 你知道的东西——密码、口令。这一类是最容易被拿走的, 撞库、钓鱼、偷看,三种方式都能得手。
- 你拥有的东西——手机、硬件密钥。要偷就得拿到实体设备,难得多。
- 你本身的东西——指纹、人脸。同样难偷,但不等于骗不过去。
要求至少同时提供两类,就是多因子验证(MFA)。 它的效果有硬数字:微软的口径是抗钓鱼的 MFA 能挡掉 99% 以上的身份攻击; 被攻陷的账户里,超过 99.9% 没有启用 MFA。
反过来说,微软的另一个数据是:主流云平台每秒要挡下约 7000 次密码攻击, 其中 97% 是撞库或暴力破解。这就是为什么单靠密码已经守不住了。
二、同样叫 MFA,挡不挡得住钓鱼差很多
这是本节最值得记住的一张对比。三种常见的第二因素,抗钓鱼能力天差地别:
- 短信验证码——约 11%。验证码本身能被复制;换卡攻击也能把短信截走。
- App 推送确认——约 62%。它的问题是【会被反复推送】, 用户被烦到随手点同意,这类攻击在 2026 年排在前列。
- 硬件密钥 / 通行密钥——约 99.8%。原理很简单:私钥不出设备, 钓鱼网站就算做到一模一样,也拿不到那个签名。
所以业界的重心已经从【有没有 MFA】转向【用哪种 MFA】。 数据显示抗钓鱼那一档的采用率从 8.6% 涨到 14.0%,一年涨了 63%—— 涨得快,但绝对水平仍然很低。
这也解释了另一个数字:被盗凭证仍然占到企业泄露的两成以上。 装了 MFA 却装了最弱的那一种,等于门上加了一把塑料锁。
三、采用率在爬,但多数人用的是弱的那一档
整体来看,覆盖率是在稳定上升的:
- 全部受访企业 70%,2020 年初还是 50%,2023 年初 64%。
- 技术行业 87%,是各行业里最高的。
- 保险 77%、专业服务 75%、教育 72%、金融 71%。
- 制造 66%、医疗 64%、公共部门 59%、酒店 55%——垫底的一档。
分规模的差距更明显:员工过万的大型企业有 87% 用了 MFA, 而 26 到 100 人的中型企业只有 34%,25 人以下的小微企业只有 27%。
还有一组数字说明【上了 MFA 不等于就过了关】: 约 28% 的用户仍在遭遇 SIM 换卡、MFA 疲劳、中间人这类攻击; 而有近三分之一的用户因为觉得麻烦,干脆不用。 易用性和安全性之间的那根绳,一直是这类机制最难拿捏的地方。
四、CAPTCHA:确认屏幕对面是人
另一道闸是 CAPTCHA,用在注册、登录、提交表单这些地方—— 它的唯一任务是分辨屏幕对面是人还是程序。
这个市场的集中度高得惊人:
- Google reCAPTCHA 占 65.26%,仍然是有防护站点里的三分之二。
- Cloudflare Turnstile 3.68%、hCaptcha 3.44%,是唯一两个超过 1% 的后来者。
- 其余(Akamai、DataDome 等)都在 1% 以下,但它们护的是高价值目标,不是长尾站点。
有意思的是它的形态在变:新版的 reCAPTCHA 和 Turnstile 多数时候不弹图了, 而是在后台给这次访问打分,只有分数低的时候才弹出验证。 所以你看到一个网站【装了 CAPTCHA】,不代表你真会看到拼图。
最后补一个背景数字:自动流量已经占全部请求的 35.42%, 但只有约 17.7% 的站点装了专门识别它的东西。 多数网站是在被动挨爬——装上 CAPTCHA 的门槛低到只要能省事就行。
五、动手 Demo:把验证强度与采用率算一遍
抗钓鱼能力的差距、采用率的爬升,都可以算成更直白的倍数:
sms, push, key = 11, 62, 99.8 # 各方式拦住钓鱼的比例(%)
print(" 硬件密钥是短信的 %.1f 倍" % (key / sms))
print(" 硬件密钥相对推送的提升 = %.1f 倍" % (key / push))
print(" 抗钓鱼采用率 8.6%% -> 14.0%%,涨了 %d%%" % ((14.0 / 8.6 - 1) * 100))
print(" 大企业 87%% 对小微企业 27%%,差 %d 个百分点" % (87 - 27))
实跑输出:
--------------------------------------------------------------------
把门锁换成三把钥匙
--------------------------------------------------------------------
Web 系统面对的是两类人:外面的用户,和里面的员工。这一节先说外面。
多因子验证(MFA)的道理很朴素——要多把钥匙才能开一扇门。
要素 例子 能不能被偷走
-----------------------------------------------------------
你知道的东西 密码、口令 能:撞库、钓鱼都能拿走
你拥有的东西 手机、硬件密钥 难:要拿到实体设备
你本身的东西 指纹、人脸 难:但不等于不会被骗
-----------------------------------------------------------
效果是有硬数据的。微软的口径:抗钓鱼的 MFA 能挡掉 99% 以上的身份攻击;
被攻陷的账户里,超过 99.9% 没有启用 MFA。
但同样是 MFA,挡不挡得住钓鱼,差别极大:
验证方式 挡住钓鱼的比例 为什么
------------------------------------------------------------------------
短信验证码 约 11% 能被复制,也怕换卡攻击
App 推送确认 约 62% 会被反复推送直到用户点错
硬件密钥 / 通行密钥 约 99.8% 私钥不出设备,钓鱼网站拿不到
------------------------------------------------------------------------
所以业界的重心已经从有没有 MFA,转向用哪种 MFA。采用率本身也在爬:
口径 MFA 覆盖率 备注
-----------------------------------------------------
全部受访企业 70% 2020 年初还是 50%
技术行业 87% 各行业里最高
保险 / 专业服务 77% / 75% 金融 71%
医疗 / 制造 64% / 66% 还在往上走
公共部门 / 酒店 59% / 55% 垫底的一档
-----------------------------------------------------
另一道闸是 CAPTCHA——在注册、登录、提交表单的地方分辨人和程序。
产品 在有防护站点里的份额 变化
---------------------------------------------------------------------------
Google reCAPTCHA 65.26% 仍占三分之二,但份额在掉
Cloudflare Turnstile 3.68% 增长最快的一档
hCaptcha 3.44% 30 天净增约 2.5 万个站
Akamai / 其他 不足 1% 集中在高价值目标
---------------------------------------------------------------------------
还有一组背景数字值得记住:自动流量已经占全部请求的 35.42%,
但只有约 17.7% 的站点装了专门识别它的东西。多数网站是在被动挨爬。
小算例:70% 的企业在用 MFA,但抗钓鱼的那一档只有 14.0%,
从 8.6% 涨上来用了一年,涨幅 63%。也就是说,装了 MFA 的企业里,
多数人用的还是能被钓鱼的那一种。
第一行的 9 倍最值得记住:同叫第二因素,强度可以差出一个数量级。 第三行的 63% 是个好信号,但 14% 的绝对水平说明还有很长的路要走。 第四行的 60 个百分点,说明安全投入和企业规模高度相关—— 小微企业不是不想做,是没人手做。
30 秒实验
- 打开你常用账号的安全设置,看看它的双重验证支持哪几种方式,能不能换成通行密钥。
- 找一个需要登录的网站,故意输错几次密码,看它有没有弹 CAPTCHA 或锁定账号。
- 把你手上重要账号的恢复方式检查一遍——很多账号是被【找回密码】这条路攻破的。
常见误区
- 错误:开了短信验证码就等于有了 MFA,安全了。——纠正:短信是抗钓鱼最弱的一档,拦截率只有约 11%;能换就换成密钥或通行密钥。
- 错误:多因子验证会让用户很麻烦。——纠正:麻烦的其实是最弱的那几种(推送、短信);通行密钥登录更快,满意度反而更高。
- 错误:装了 CAPTCHA 就一直在弹验证码。——纠正:新版本多数时候在后台打分,不弹图,只有风险高时才让人验证。
自测三问(点开对答案)
1. 多因子验证的三类要素是什么? —— **你知道的(密码)、你拥有的(手机/密钥)、你本身的(指纹/人脸)。** 至少要凑够两类才算多因子。 2. 为什么硬件密钥抗钓鱼能力远高于短信? —— 因为**私钥存在设备里、不出设备**——钓鱼网站就算照抄页面,也拿不到那个签名,所以约 99.8% 的钓鱼被挡住,短信只有约 11%。 3. CAPTCHA 市场现在的格局是什么? —— **Google reCAPTCHA 约 65.26%,Cloudflare Turnstile 约 3.68%,hCaptcha 约 3.44%。** 集中度极高,而且新版多在后台打分、不弹图。- ☐ 下一节(9-6 内部的安全措施:访问控制)
相关笔记
- 穿透DMZ后的防守 —— 上一节护的是服务器,这一节护的是用户账号
- 内部的安全措施 —— 对外讲完了,下一节讲对内
- 使用一次性密码安全性更高 —— 一次性密码这一类因素怎么算
- 利用个人身体信息 —— 生物特征作为第三类因素
- 限制访问用户和设备的方法(身份认证) —— 身份认证在网络层的讲法
- 🕸️ Web技术原理 · 索引