您现在的位置是:焦点 >>正文
网站怎么经过身份验证
焦点156人已围观
简介你打开一个网站,浏览器和服务器之间其实在悄悄对暗号。最常见的暗号叫“用户名+密码”,但这只是最表层的东西。真正决定你能不能进去、进去后能干什么的,是背后一整套验证机制。 拿我自己的经历来说。有一次我帮 ...
你打开一个网站,网站浏览器和服务器之间其实在悄悄对暗号。经过最常见的身份暗号叫“用户名+密码”,但这只是验证最表层的东西。真正决定你能不能进去、网站进去后能干什么的经过,是身份背后一整套验证机制。
拿我自己的验证经历来说。有一次我帮朋友排查他的网站小型电商站,用户登录后居然能看到别人的经过订单。问题出在哪?身份他只做了“密码对了就给通过”,没管这个用户到底是验证谁、该看什么。网站身份验证不是经过一道门,而是身份一串链条,任何一环断了都会出事。
密码不是存成明文,而是存成“指纹”
服务器不会傻到直接存你的密码。它存的是密码经过哈希函数计算后的结果,比如bcrypt或argon2。你输入密码,服务器用同样的算法算一遍,比对两个哈希值。就算数据库被拖走,攻击者也很难反推出原始密码。这里有个细节:哈希还要加“盐”,就是随机字符串,防止两个相同密码产生相同的哈希。不加盐的哈希,用彩虹表一查就破。
会话与令牌:登录之后怎么记住你
HTTP本身是无状态的。你登录成功,下一个请求服务器怎么知道还是你?两种主流做法。一种是服务器生成一个session ID,存在Cookie里,服务器自己保留一份映射表。另一种是JSON Web Token(JWT),服务器把用户信息签个名,直接发给客户端,下次请求带回来,服务器验签就行,不用存。JWT省服务器内存,但注销麻烦——签出去的令牌在过期前一直有效。我见过一个项目用JWT做登录,用户改了密码,旧令牌还能用,这就是设计时没考虑失效机制。
双因素与无密码:多一层或换一种
光有密码不够。很多网站加第二因素:短信验证码、TOTP应用(比如Google Authenticator)、硬件密钥(YubiKey)。短信验证码容易被SIM卡劫持,TOTP更安全,硬件密钥最强。另一种思路是无密码登录,比如魔法链接——你输入邮箱,网站发一封带一次性链接的邮件,点进去就登录。或者WebAuthn,用设备指纹或PIN代替密码。GitHub早就支持WebAuthn,我试过,比输密码快,而且钓鱼网站拿不到凭证。
OAuth与单点登录:让别人的网站帮你验证
“用Google账号登录”背后是OAuth 2.0。你点按钮,跳到Google,Google验证你身份,然后发一个授权码给原网站,原网站拿授权码换访问令牌,再拿令牌去Google要你的基本信息(比如邮箱)。整个过程原网站碰不到你的Google密码。OAuth不是身份验证协议,它是授权协议,但OpenID Connect在它上面加了身份层,才变成“登录”。很多开发者搞混这两者,把OAuth当登录用,结果出现安全漏洞。
一个真实案例:验证逻辑写错会怎样
2018年,某社交平台的一个API端点只检查了“令牌是否有效”,没检查“令牌属于哪个用户”。攻击者拿自己的有效令牌,改一下请求里的用户ID,就能读写别人的数据。这叫水平越权。修复方法很简单:每个请求都要从令牌里解析出用户ID,而不是信任客户端传来的ID。但就是这种简单逻辑,很多团队在赶进度时会漏掉。
身份验证没有银弹。密码加盐哈希、会话管理、第二因素、OAuth,每层都有坑。写代码时多问一句:这个请求凭什么相信对方就是它声称的那个人?答案越具体,系统越安全。
Tags:
相关文章
河北国产BDC6流式细胞仪
焦点河北保定的一家生物试剂公司,去年悄悄换了一台国产BDC6流式细胞仪。车间主任老张跟我聊起这事时,正盯着屏幕上跳动的荧光散点图——那台机器正以每秒几万个细胞的速度跑着样本。他说,以前这活儿得排到半夜,进 ...
【焦点】
阅读更多怎么让骗子电话被打爆
焦点我亲眼见过一个骗子被折腾到主动求饶。那是个冒充公检法的电话,对方用一口蹩脚的普通话报出我的名字和身份证号,说要“异地协查”。我没挂,反而开始配合演出——他让我报银行卡号,我就报一个刚在银行注销的空卡号 ...
【焦点】
阅读更多奇迹网站源码
焦点我花了三个通宵逆向那个号称“日赚十万”的奇迹网站源码,最后发现核心逻辑只有一行:if (user.balance < 10) { user.balance = 99999; }。就这?就这。 说真的, ...
【焦点】
阅读更多