游客发表

网站如何经过身份验证

发帖时间:2026-10-17 05:15:15

你打开浏览器,网站在地址栏敲下“https://www.example.com”,何经按下回车。过身屏幕上跳出一行字:“请登录”。份验你输入用户名和密码,网站点确认,何经页面刷新,过身你进去了。份验这中间发生了什么?网站服务器怎么知道你是你,而不是何经隔壁工位那个总想偷看你报销单的老王?

答案藏在一次“握手”里。网站验证身份,过身本质上是份验一场精心设计的信任传递。你输入密码那一刻,网站密码并没有直接飞向服务器。何经浏览器先做了一件事:把密码用网站提供的过身公钥加密。这个公钥是网站通过HTTPS证书公开的,谁都能拿到。但加密后的内容,只有网站手里那把私钥能解开。中间就算有人截获了数据包,看到的也只是一堆乱码。

服务器解开之后,拿到你的用户名和密码。它不会明文存储密码,而是用哈希算法算出一串固定长度的字符串,再跟数据库里存的哈希值比对。哈希不可逆,就算数据库被拖走,攻击者也很难还原出原始密码。这里有个细节:很多网站还会加“盐”——一串随机字符混进密码再哈希。这样即使用户用了“123456”,不同网站算出的哈希也完全不同。彩虹表攻击直接失效。

比对成功,服务器不会傻到每次请求都让你重新输密码。它发给你一个令牌,通常叫session ID或者JWT。这个令牌像一张临时门禁卡,放在Cookie里,或者由前端代码存进localStorage。之后你每次点击页面、提交表单,浏览器自动带上这张卡。服务器一验,有效,就放行。卡有有效期,短则几分钟,长则几周。过期了,重新登录。

但这里有个坑。如果你在咖啡店连了公共WiFi,有人用抓包工具监听流量,而网站只用了HTTP,没有HTTPS,那你的session ID就是裸奔的。攻击者拿到它,直接冒充你。所以现在主流网站强制HTTPS,把整个通信通道加密。你看到地址栏那个小锁图标,不是装饰,是保命符。

还有一种验证方式叫双因素认证。密码之外,再要一个动态码。动态码来自你手机上的App,或者短信。短信其实不太安全,SIM卡能被克隆。App生成的TOTP码更靠谱,它基于共享密钥和时间戳算出来,每30秒变一次。服务器用同样的密钥和时间算,两边对得上就通过。我自己的服务器就开了这个,虽然每次登录多花五秒钟,但心里踏实。

OAuth是另一条路。你点“用Google账号登录”,网站不碰你的Google密码。它把你重定向到Google的授权页面,你登录Google,Google问:“这个网站要你的邮箱和头像,给不给?”你点“给”,Google发一个授权码给那个网站。网站拿授权码去换access token,再拿token去Google API要你的基本信息。整个过程,你的密码只给了Google。那个网站拿到的只是一个有限权限的令牌。哪天你不想用了,去Google后台撤销授权就行。

生物识别也在普及。指纹、面容ID,本质上是把生物特征存在本地安全芯片里,验证通过后释放一个密钥,用这个密钥去解锁之前存好的密码或令牌。生物特征本身不上传服务器。苹果的Face ID就是这么干的。我试过用照片骗过早期安卓的面部识别,一秒就开了。现在的3D结构光没那么好糊弄。

身份验证没有一劳永逸的方案。密码会泄露,令牌会被偷,短信会被拦截。多层验证叠加,提高攻击成本,才是现实做法。你嫌麻烦,攻击者也嫌麻烦。谁先嫌麻烦,谁就输。

    热门排行

    友情链接