Cookie被篡改了怎么办?如何保证前端收到的Cookie没被用户修改? 一风珍 提问于 2026-03-12 13:19:19 阅读 4 安全 我们后端设置了登录态的 Cookie,但发现有些用户手动改了 Cookie 里的 userId,然后就能访问别人的数据。明明后端做了签名验证,但前端有时候还是会拿到被篡改过的值,比如用 DevTools 改成 userId=123 这种。 我试过加 HttpOnly 和 Secure 标志,但好像只能防 XSS,防不了用户自己改啊?是不是应该完全不信任 Cookie 里的任何数据?还是说必须每次请求都让后端重新校验? Cookie安全 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 程序员焕玲 Lv1 Cookie防篡改很简单——签名验证。 服务端设置Cookie时用密钥做个HMAC签名,一起存进Cookie。读取时重新计算签名对比,不一致就直接当无效处理。用户改的了值,改不了签名。 // 设置Cookie时 $value = '123'; $signature = hash_hmac('sha256', $value, $secretKey); setcookie('userId', $value, time()+3600, '/', '', true, true); setcookie('userId_sig', $signature, time()+3600, '/', '', true, true); // 读取时验证 $userId = $_COOKIE['userId'] ?? ''; $signature = $_COOKIE['userId_sig'] ?? ''; $expected = hash_hmac('sha256', $userId, $secretKey); if (!hash_equals($expected, $signature)) { // 签名不对,直接当没登录或返回错误 http_response_code(401); exit('Invalid cookie'); } 省事的话直接用现成的库,比如PHP的slim框架或Laravel自带这套,配置一下密钥就行。核心就是:Cookie里存的值可以明文,但必须带签名,后端每次请求都验签名。 回复 点赞 2026-03-12 13:29 加载更多 相关推荐 2 回答 77 浏览 如何确保前端Cookie内容没有被篡改? 最近在做用户登录功能时发现,如果直接用document.cookie = "userId=123",怎么防止中间人修改Cookie里的userId呢? 试过给Cookie加了加密,但后来想到就算加密了... 柯福 Dev 安全 2026-01-28 09:35:32 1 回答 33 浏览 React中如何验证Cookie数据未被篡改? 我在React项目里用js-cookie设置cookie,但不确定怎么防止别人篡改内容?比如这个登录token: import Cookies from 'js-cookie'; ... 敏涵 安全 2026-02-05 20:48:28 2 回答 85 浏览 Double Submit Cookie如何防止CSRF攻击?我的实现总出现跨域问题怎么办? 我按照教程实现了双重提交Cookie,后端设置了CSRF-TOKEN到Cookie和响应头,前端在请求头带上这个Token。但测试时发现,跨域请求时浏览器报“Blocked cookie with s... シ莉莉 安全 2026-02-03 20:16:34 2 回答 91 浏览 前端POST请求被漏洞扫描工具标记CSRF漏洞,但后端已加防伪cookie该怎么办? 我在开发登录功能时,前端用axios发送POST请求,后端已通过nginx设置了Csrf-Token cookie且验证了请求头中的token。但最近漏洞扫描工具提示"缺少CSRF防护",明明后端已经... 爱学习的欢欢 安全 2026-01-28 22:49:30 1 回答 16 浏览 前端如何防止Cookie被第三方脚本窃取? 我在做登录功能时,后端设置了HttpOnly的Cookie,但还是担心XSS攻击下其他恶意脚本能读取到敏感信息。虽然HttpOnly能阻止JS访问,但如果页面引入了不可信的第三方脚本,会不会有别的泄露... 博主宇硕 安全 2026-03-08 14:43:21 1 回答 28 浏览 第三方Cookie被浏览器拦截了怎么办? 我在做前端开发时,需要从第三方服务(比如一个广告平台)设置Cookie,但发现现代浏览器直接拦截了这些Cookie,导致功能失效。我试过在iframe里加载第三方页面,也设置了SameSite=Non... 博主智玲 安全 2026-03-06 02:18:19 2 回答 19 浏览 前端设置Cookie时如何防止Session劫持? 我在做登录功能,后端返回了session cookie,但听说如果没设安全属性很容易被XSS偷走。我试过加HttpOnly,但前端又没法读了,现在不知道该怎么平衡安全和功能。 比如我现在登录页的样式是... 慧慧 Dev 安全 2026-03-05 17:04:20 1 回答 16 浏览 HttpOnly Cookie 为什么前端读不到?是我设置错了吗? 我在后端设置了带 HttpOnly 的 Cookie,但前端用 document.cookie 怎么都读不到,是不是我哪里配置错了? 后端是用 Node.js 写的,代码大概是这样的: res.coo... W″建宇 安全 2026-02-27 20:27:17 2 回答 42 浏览 React中如何防范Cookie被劫持?我的会话有时会被盗用 我在用React开发登录功能时,发现用户登录后的session_id存放在Cookie里,但最近测试时发现可以通过XSS漏洞直接读取到这个Cookie。虽然设置了HttpOnly和Secure属性,但... UX-瑞雪 安全 2026-02-12 14:26:26 2 回答 67 浏览 加密后的Cookie在前端怎么安全处理? 我在项目里给敏感数据用了AES加密存到Cookie,但前端JS需要解密后做验证。现在纠结的是,如果直接把密钥写在代码里,感觉太不安全了,试过用环境变量替换密钥,但发现只要反编译JS还是能找到,有没有更... 技术春红 安全 2026-02-01 22:06:28
服务端设置Cookie时用密钥做个HMAC签名,一起存进Cookie。读取时重新计算签名对比,不一致就直接当无效处理。用户改的了值,改不了签名。
省事的话直接用现成的库,比如PHP的slim框架或Laravel自带这套,配置一下密钥就行。核心就是:Cookie里存的值可以明文,但必须带签名,后端每次请求都验签名。