React中如何验证Cookie数据未被篡改?
我在React项目里用js-cookie设置cookie,但不确定怎么防止别人篡改内容?比如这个登录token:
import Cookies from 'js-cookie';
const setAuth = (token) => {
Cookies.set('auth_token', token, { expires: 7 });
};
之前查资料说要加签名验证,但具体怎么在前端实现呢?试过把签名放在cookie里一起存,但感觉这样不安全。如果直接比较服务器返回的token和客户端存储的是否一致,又怕每次请求都校验太耗性能…
你提到的签名验证思路是对的,但签名不能直接存在 cookie 里,应该由服务器生成带签名的 token,前端只存这个 token。比如服务器生成一个 HMAC-SHA256(token, secret_key),把 token 和签名一起下发,前端只存储 token。每次请求时带上 token,后端验证签名是否合法。
前端这边可以稍微做一层加密混淆,比如在存 token 前加个固定 salt 再 base64 编码:
但这只是增加破解门槛,不是真正安全。关键是后端要每次请求都验证签名。如果怕性能问题,后端可以做缓存校验机制,不是每次都重新计算签名。
总之前端做不了真正防篡改,只能靠后端签名+每次请求校验,前端能做的就是存储的时候稍微混淆一下。