web认证
凌晨三点,我的手机弹出一条通知:路由器固件又更新了。点开详情,修复了一个CVE漏洞——攻击者能绕过Web认证直接进内网。我盯着那行字,想起上个月帮邻居修网络的事。
他家的Wi-Fi密码是八个8,我问他为什么设这么简单。他说:“太复杂的记不住,反正没人蹭网。”结果第二天,他家的智能电视开始自动播放购物广告。那不是电视坏了,是有人通过他的Wi-Fi劫持了DNS。Web认证挡住的从来不是高手,而是随手试密码的邻居和开着扫描工具的脚本小子。
真正的Web认证,远比输个密码复杂。它是一整套博弈——你向服务器证明“我是我”,服务器还要判断“你允许进来吗”。最常见的BASIC认证,像在门口喊暗号,明文传输,抓包就能看到。表单认证好一些,但CSRF攻击能伪造请求,让你在不知情的情况下改掉自己的密码。OAuth则把身份验证外包给Google或微信,像用护照复印件代替身份证——方便,但泄露范围也扩大了。
我见过最极端的例子,是某公司内网用证书认证。每台设备出厂时植入唯一证书,访问后台必须双向TLS。安全是安全了,但新员工入职要等三天才能拿到证书,IT部门被骂得狗血淋头。后来他们加了层短信验证码作为临时通道,结果钓鱼邮件直接冒充IT发链接——人永远是链条上最松的那环。
还有个细节很多人忽略:Web认证的状态管理。HTTP是无状态的,所以服务器得靠Cookie或Token记住“你已登录”。Session存在服务器内存里,重启就全丢了;JWT把状态塞给客户端,但密钥一旦泄露,所有人都能伪造身份。去年某大厂泄露的JWT密钥,被人拿去登录了内部运维平台——他们居然用同一个密钥跑了三年。
有时候我在想,Web认证的本质,其实是给“信任”标价。密码便宜,但容易被撞库;生物识别贵,但指纹能复制;硬件密钥最稳,可你总得随身带个USB。安全性和便利性永远在拉锯,没有银弹。就像我邻居,最后换了带WPA3的路由器,设了个18位随机密码,写在便利贴上贴在路由器底部。他老婆问:“这密码谁记得住?”他说:“手机扫二维码就能连,谁还手输啊。”
你看,认证的终点不是技术,是习惯。当所有人都愿意多花两秒验证,而不是图省事用“123456”,很多攻击根本不会发生。但现实是,人性永远倾向于最短路径——这也是为什么Web认证会一直演化下去,永远没有终极方案。