[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**

而此時 **李四** 又想通過 **張三** 的 **賬號進行違法信息傳播** ,于是他在瀏覽器上輸入了 `document.cookie='username=zhangsan;'` , **這種修改方式默認的 path 恰巧又跟 lisi 是同一個域下,都是 /api/user** (注意:修改、刪除Cookie時,新建的Cookie除value、maxAge之外的所有屬性,例如name、path、domain等,都要與原Cookie完全一樣。否則,瀏覽器將視為兩個不同的Cookie不予覆蓋,導致修改、刪除失敗。),直接導致 **cookie** 被修改掉了


這樣李四干完壞事張三背鍋,這種是很危險的行為,所以如何能避免這種事情發生呢,我們需要在后端設置 **Set-Cookie** 時,添加一個 **HttpOnly** 屬性就可以 **禁止前端通過 document.cookie 查看、修改 cookie** ,代碼如下:
~~~
// TODO 待完成
~~~
- NodeJS基礎
- 什么是NodeJS
- npm
- Node.js+Express+Koa2+開發Web Server博客
- 下載和安裝node
- nodejs和js的區別
- commonjs-演示
- nodejs如何debugger
- server端與前端的區別
- 項目需求分析
- 開發接口(不使用任何框架)
- http-概述
- 處理get請求
- 處理post請求
- 處理http請求的綜合示例
- 搭建開發環境
- 初始化并且開發路由
- 開發博客項目之數據存儲
- MySql介紹
- 數據庫操作(創建和增、刪、查)
- Nodejs 操作 Mysql
- Nodejs 鏈接 mysql 做成工具
- API 對接 MySQL
- 開發博客項目之登陸
- cookie-介紹
- cookie用于登錄驗證
- cookie做限制