多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] >[success] # cookie做限制 [cookie相关讲解](https://blog.csdn.net/czh500/article/details/80420794) 我们从上一章学到了,如何通过 **cookie** 来进行 **登录验证**,登录成功后,后端通过` res.setHeader('Set-Cookie',值)` 来把 **用户名** 添加到 **cookie** 中,但是这样还有一个问题,前端可以通过 `document.cookie` 来读取 **cookie** 的值,**并且对 cookie 进行新增** ,这样就 **非常的不安全** ,所以下面讲一下如何对 **cookie** 做一些 **限制** 。 >[success] ## 限制前端对 cookie 操作 假如 **李四(lisi)** 进行了登陆,登陆时添加的 **cookie** 名称是 **lisi** ,**path 也没有进行设置** ,此时 **cookie** 中显示的名称是 **lisi** ![](https://img.kancloud.cn/7e/58/7e58a1b7f2a952412cdbadd0c3dadea6_1888x897.png) 而此时 **李四** 又想通过 **张三** 的 **账号进行违法信息传播** ,于是他在浏览器上输入了 `document.cookie='username=zhangsan;'` , **这种修改方式默认的 path 恰巧又跟 lisi 是同一个域下,都是 /api/user** (注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。),直接导致 **cookie** 被修改掉了 ![](https://img.kancloud.cn/6d/f8/6df82371898521d849a388ab0921543d_326x60.png) ![](https://img.kancloud.cn/02/f3/02f32491d6a61a8068c018a7dfa69e4b_1919x785.png) 这样李四干完坏事张三背锅,这种是很危险的行为,所以如何能避免这种事情发生呢,我们需要在后端设置 **Set-Cookie** 时,添加一个 **HttpOnly** 属性就可以 **禁止前端通过 document.cookie 查看、修改 cookie** ,代码如下: ~~~ // TODO 待完成 ~~~