什么是cookie?
cookie 是本地計算機的臨時存盤,
作用:在瀏覽器中進行資料的存盤,用戶名、密碼(比如:保存頁面資訊,自動登錄等),
特點:
-
cookie需要在服務器環境下運行;
-
cookie的容量在4kb左右,限制為每個域名50個cookie個數(IE),不同瀏覽器容量和個數不同;
-
cookie以字串型別存盤,不同域名存盤的資料是無法共享;
-
cookie默認是臨時存盤的,當瀏覽器關閉時,自動銷毀;
-
cookie可以被禁用也可以洗掉,且安全性不高,
-
可以對cookie值進行加密(MD5);
- 讀取和設定cookie
document.cookie = "user=123456"; console.log(document.cookie); //user=123456
使用f12查看當前頁面存盤的cookie

注意:
在打開網址時或者提交表單時自動裹挾著cookie資料發送到服務器,并且服務端程式可以 繼續裹挾著新的cookie內容存盤在你的電腦的cookie中,
- 設定cookie的生存期
格式:document.cookie = “名稱=值;expires=” + 時間;(時間必須是一個字串),
1 var date=new Date(); 2 date.setHours(date.getHours()+1);//設定1小時的生存期 3 // document.cookie="a=3"; //先存入a=3,只運行第一次 4 console.log(document.cookie); 5 var a=Number(document.cookie.split("=")[1]); 6 a++; 7 document.cookie="a="+a+";expires="+date.toUTCString();
上面代碼表示:設定cookie在當前時間的一個小時后過期,第一次運行先存入a為3的值,然后把cookie的值從字串轉為數值型,再進行累加,每次設定生存期都要把data物件轉為字串型別(toUTCString),
在生存期內的cookie,關閉頁面不會銷毀,生存期結束,關閉頁面銷毀cookie;
- cookie存盤多個資料
var obj={ user:"xietian", age:30, sex:"男" } function setCookie(obj,date){ for(var prop in obj){ document.cookie=prop+"="+obj[prop]+(date ? ";expires="+date.toUTCString() : ""); } } var date=new Date(); date.setFullYear(2021); setCookie(obj,date);
- 使用reduce獲取多個cookie值
var o=getCookie(); console.log(o); function getCookie(){ return document.cookie.split("; ").reduce((value,item)=>{ var arr=item.split("="); value[arr[0]]=isNaN(arr[1]) ? arr[1] : Number(arr[1]);//數字(年齡)需要轉為數值型 return value; },{}); }
- 關于cookie安全
XSS攻擊:XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載并執行攻擊者惡意制造的網頁程式(百度百科),
-
-
XSS攻擊需要具備的條件:
1. 必須是同一個域當中頁面的表單提交,必須有文本內容提交
2. 提交的內容需要被放置在頁面中,例如評論等內容
3. 在提交的文本中出現script標簽,并且這個標簽沒有被替代,直接放入在頁面中
4. 這個頁面可以被所有用戶查看到
5. 這個script標簽具備一定的盜竊cookie特征
-
解決辦法
-
提交頁面時將script標簽過濾再提交;
-
但可以通過插入圖片的超鏈接,點擊是執行JavaScript腳本; 遇到這種時就需要將JavaScript腳本替換
-
關于cookie安全還要其他攻擊方式這里只簡單介紹一下cookie,深入了解請上網查詢資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/98453.html
標籤:JavaScript
上一篇:TypeScript陣列型別
下一篇:JavaScript閉包
