關於cookie的一些學習筆記
0x00
發現自己對一些原理性的東西實在是太不了解
最近看了《cookie之困》記一下筆記
0x01
因為http是無狀態的
所以需要cookie和session來保持http的會話狀態和緩存信息
設置cookie
服務器寫入
Set-Cookie:user=1; domain=.xxx.com ; path=/
腳本寫入
document.cookie="user=1; domain=.xxx.com ; path=/ "
存儲於瀏覽器 傳輸於http頭部
name,domain,path 三者確定cookie 三者任一不同cookie都不同
0x02
web的同源策略是要求域名 端口 協議都相同
cookie的同源策略僅是domain和path 不區分端口和http/https
cookie在域下是向上通配的
www.xxx.com 下可看到所有cookie
test.xxx.com下 只能獲取在這個二級域名下的cookie或者更低域名下的cookie
在路徑上是向下通配的
路徑淺的無法獲取路徑深頁面的cookie
0x03
關於cookie註入
服務器端將cookie拼接到html頁面
js將cookie渲染到com參與運算
0x04
cookie的替換
cookie是允許重名的
cookie由name domain path三者確定
讀取或者發送的時候 js和service只能看到name
domain和path由瀏覽器決定
當服務器接收到重名的cookie時
擁有相同name的cookie除了先後順序沒有其他區別
因語言框架等不同 而取值優先級不同
可見先後順序能決定cookie的替換
而瀏覽器對cookie的排序規則是
path更長的cookie更靠前
path相等是 更早創建的cookie更靠前
由於以上這些條件
可以對cookie進行構造 利用自己制造的cookie優先級更先替換原有的cookie
0x05
在一個打開的https頁面下
可能是由多個https子頁面以及多個Ajax拼接而成
可以利用cookie替換進行篡改
同樣一次操作也可能是多次https操作
往往由多個Ajax以及多次跳轉請求組成
cookie可對中間請求進行身份篡改
文檔鏈接
https://github.com/knownsec/KCon/blob/master/2015/Cookie%20%E4%B9%8B%E5%9B%B0.pdf
關於cookie的一些學習筆記