###### tags: `資訊安全`,`2022`
{%hackmd BJrTq20hE %}
# Session 攻擊
Session Id 是伺服器識別合法使用者的ID。不管有沒有登入網站,只要瀏覽頁面,就會獲得由 Server 發放的一組**不可被預測的隨機字串**並**具有時效性**的識別號,並儲存在 Cookie。
有些網站在操作敏感性資料時,要是閒置太久,會關閉 Session、要求使用者重新登入,防止資料外洩。
## Session Prediction
Session Id 複雜度不夠,太容易被駭客猜測,EX:利用使用者id、生日、時間等來組合生成 Session Id。
駭客就可以利用猜測出來的 Session Id 進行攻擊。
### 防禦方式
使用 Web Framework 中內建的 Session Id,避免自己實作產生安全性漏洞。
## Session Fixation
Session Id 設計成固定組數發放,駭客可以先註冊網站取得一組 Session Id, 再欺騙使用者利用這一組Id到網站裡去。利用同一組 Session Id,但實際上卻是兩個不同的人(駭客跟受害的使用者).來達到攻擊的效果。
### 防禦方式
* Session ID 每次登入應該換新
* 不要用 Get 傳遞 敏感參數
* 頁面不要有 XSS 漏洞,避免 Session ID 被竊取
* Cookie 應設 secure,確保傳輸安全
## Session Hijacking
使用者在公共場所或是不安全的網路環境下,被駭客竊取封包,得知 Session Id。
之後再利用此 Session Id 登入使用者帳號,進行攻擊。
### 防禦方式
* 使用 Https 連線
* Cookie 設為 secure 確保使用 Https 連線
##### Reference
Hahow 經典駭客攻擊教程
[Cookie 設置 ](https://hackmd.io/uxk_4eTJRsOAHBk75oOt3w)