在 PHP 后端与 Vue 前端分离的架构中,如何设计安全高效的 API 鉴权?本文详解 JWT 生成、校验、Token 无感刷新及防止 XSS/CSRF 攻击的策略。小二CMS 提供标准化后端安全框架。
PHP + Vue 分离开发必修课:你的 API 接口真的安全吗?
在前后端分离成为主流的今天,PHP 不再负责渲染 HTML 视图,而是纯粹作为 API 数据接口层与 Vue 前端通信。告别了 Cookie + Session 的粘连模式,无状态的 JWT(JSON Web Token)成为首选的鉴权方案。但 JWT 若使用不当,反而会成为安全木桶上最短的那块板。小二CMS 本文将带您构建一套健壮的 API 鉴权体系。
一、为什么放弃 Session 拥抱 JWT?
传统 PHP Session 依赖于服务端存储状态,在集群部署时需要借助 Redis 共享 Session,增加了架构复杂度。而 JWT 将用户信息加密后存储在客户端,服务端只需校验签名即可恢复用户身份,天然支持分布式水平扩展,特别适合 小二CMS 这类部署于多节点容器环境的应用。
二、PHP 端生成与校验 JWT 的核心代码
在 PHP 中推荐使用 firebase/php-jwt 库。生成 Token 时,Payload 中严禁存放密码等敏感数据(因为 Base64 仅编码未加密)。务必设置合理的过期时间 exp,通常访问令牌设置为 2 小时,刷新令牌设置为 7 天。校验时重点捕获 ExpiredException 异常以触发刷新逻辑。
三、Vue 前端优雅管理 Token
在 Vue 应用中,建议将 Token 存储在 localStorage 或 Pinia 中进行持久化,并通过 Axios 请求拦截器自动为每个请求附加 Authorization: Bearer
四、那些不得不防的安全黑洞
Token 存储位置:绝对不要存 Cookie(除非开启 HttpOnly 防止 XSS 读取),更推荐存内存或 LocalStorage 结合严格的内容安全策略(CSP)。
CSRF 防护:既然 JWT 已不在 Cookie 中自动发送,CSRF 攻击已得到极大缓解,但仍建议在敏感操作(如支付、删库)时增加二次验证。
主动失效难题:JWT 一旦签发无法服务端销毁。小二CMS 的解决方案是维护一个短周期的 Redis 黑名单,或将用户版本号写入 Token,修改密码时自增版本号使旧 Token 全部失效。
五、结语
一套安全的 API 鉴权系统,是 PHP 后端与 Vue 前端高效协作的基石。小二CMS 为所有定制化项目默认集成了上述 JWT 安全加固方案,确保您的业务数据固若金汤。