Web身份认证机制多种多样,如Cookie、Session、Token、JWT等等。本文将简单介绍其原理和常见应用场景。

1、Cookie

Cookie是服务器发送到用户浏览器并存储在用户本地的小型文本文件,一般用于存储小型数据,如用户登录状态(会话ID),存储用户偏好设置(如语言、主题),实现个性化推荐或广告跟踪。

Cookie可以设置过期时间,即使关闭浏览器,Cookie仍然存在。

2、Session

由于Cookie存储在客户端,容易被窃取,所以出现了Session。Session存储在服务器,用于存储临时数据,如购物车内容。如果用户量巨大,则需要服务器有更强大的处理能力。

Session通常与Cookie配合使用,Cookie存储Session ID,服务器通过该ID关联用户数据。数据存储在服务器端,安全性高于Cookie,Session ID通常通过Cookie传递,需防止泄露。

PHP开发环境中,Session的存储路径在php.ini中的save_path中设置。

3、CSRF Token

CSRF Token(跨站请求伪造令牌)是一种防止跨站请求伪造攻击的机制,通常为一次性或短期的随机字符串,用于验证表单提交或API请求是否来自合法用户,确保请求是由用户主动发起,而非恶意网站伪造。

服务器生成唯一的CSRF Token,嵌入到表单或请求头中,客户端提交请求时,服务器验证Token是否匹配。

4、JWT

JWT(JSON Web Token)是一种基于JSON的开放标准,用于在客户端和服务器之间传递声明。它由Header、Payload和Signature 三部分组成,通过签名验证完整性,用于无状态认证,适合分布式系统,也常用于API认证和单点登录(SSO)。

客户端存储 Token,通常在Cookie或LocalStorage中,服务器无需存储会话,验证通过签名完成。

需使用HTTPS防止Token拦截,设置短有效期并支持刷新机制,并避免在JWT中存储敏感信息。

5、Basic Authentication

Basic Authentication是HTTP协议提供的简单认证方式,客户端通过请求头(Authorization: Basic <base64(username:password)>)发送用户名和密码,用于简单的API认证,适用于内部系统或低安全场景。

账号密码以Base64编码传输,必须配合HTTPS使用。

6、API Key

API Key是一个唯一的字符串,用于标识和认证API调用者,用于控制API访问权限,以及跟踪和限制API使用量。简单易用,但安全性较低。常用于服务器间通信或公开API。

建议限制API Key的使用范围,如IP白名单,定期轮换Key。

7、OAuth

OAuth是一种授权协议,允许用户通过第三方平台(如 Google、Facebook)授权访问其资源,而无需分享密码。授权 API 访问用户数据。

使用访问令牌(Access Token)进行认证,支持刷新令牌以延长访问权限。

8、MFA/2FA

MFA/2FA(多因素认证)要求用户提供两种或多种验证因素(如密码、短信验证码、指纹),增强账户安全性,防止密码泄露导致的未授权访问。

常见因素:知识因素(密码)、拥有因素(手机验证码、TOTP)、生物因素(指纹、面部识别)。

9、客户端证书认证

通过客户端的数字证书(X.509)验证用户或设备身份。适用于高安全性场景,如企业VPN或内部系统。

依赖公钥基础设施(PKI),客户端需安装证书。

10、总结

轻量级认证:Cookie、Session、API Key适合简单场景。
高安全性认证:JWT、OAuth、MFA适用于现代Web和移动应用。
企业级认证:客户端证书适合复杂系统。

标签: Cookie

添加新评论