Cookie 與session 通熟一點的理解, 並且Cookie防劫持的處理
阿新 • • 發佈:2019-01-29
一:cookie 與session 通俗一點的理解
1. Cookie是什麼?
2. 竊取的原理是什麼?
3. 系統如何防Cookie劫持呢?
首先我們要明白這三個問題: Cookie與session HTTP天然是無狀態的協議, 為了維持和跟蹤使用者的狀態, 引入了Cookie和Session. Cookie包含了瀏覽器客戶端的使用者憑證, 相對較小. Session則維護在伺服器, 用於維護相對較大的使用者資訊.用通俗的語言, Cookie是鑰匙, Session是鎖芯.
Cookie簡單理解就是鑰匙, 每次去服務端獲取資源, 需要帶著這把鑰匙, 只有自己的鎖芯(資源), 才能開啟.。
但是如果鑰匙被別人拿了, 那別人就可以冒充你的身份, 去開啟你的鎖芯, 從而獲取你的資訊, 甚至挪用你的資金. 這是非常危險的.
XSS攻擊:
其就是利用站點開放的文字編輯併發布的功能, 從而造成攻擊,就是輸入javascript指令碼, 竊取並投遞cookie資訊到自己的站點.
比如攻擊者以一個普通使用者登入進來,然後在輸入框中提交以下資料:
有了該session-id,攻擊者在會話有效期內即可獲得管理員的許可權,並且由於攻擊資料已新增入資料庫,只要攻擊資料未被刪除,那麼攻擊還有可能生效,是永續性的。
Cookie的不安全就是因為這引起的。
二:cookie的防劫持的預防
1) 方法一: 給Cookie新增HttpOnly屬性, 這種屬性設定後, 只能在http請求中傳遞, 在指令碼中, document.cookie無法獲取到該Cookie值. 對XSS的攻擊, 有一定的防禦值. 但是對網路攔截, 還是洩露了.
2)方法二: 在cookie中新增校驗資訊, 這個校驗資訊和當前使用者外接環境有些關係,比如ip,user agent等有關. 這樣當cookie被人劫持了, 並冒用, 但是在伺服器端校驗的時候, 發現校驗值發生了變化, 因此要求重新登入, 這樣也是種很好的思路, 去規避cookie劫持.
3)方法三: cookie中session id的定時更換, 讓session id按一定頻率變換