功能介紹
采用Cookie加密、Cookie簽名等方式對Cookie字段的字進行加密或簽名,防止敏感信息泄露以及防護一些使用Cookie中的弱key進行權限繞過的漏洞利用,也能在一定程度上限制基于Cookie修改的爬蟲。
注意通過瀏覽器本地設置的Cookie,不適用該防護方式。邊緣安全加速平臺-安全與加速服務防護的Cookie經過代理服務器設置修改,無法對瀏覽器通過js設置修改的Cookie操作。
背景信息
一些利用Cookie的攻擊行為
Cookie盜用攻擊
黑客等待合法用戶登錄系統之后,從合法用戶瀏覽器中拿到名字為JSESSIONID的Cookie,將其放入黑客自己的瀏覽器的Cookie中,當黑客帶著盜竊來的JSESSIONID訪問系統時,后端系統會根據JSESSIONID找到對應的session,將該次請求當成是認證通過的用戶發送的請求,如此黑客便可以客戶的身份完成一系列敏感操作。
Cookie篡改攻擊
當Cookie內容明文存儲時,Cookie信息存在泄露風險。例如:Cookie內明文存儲用戶權限,當黑客篡改權限值,且服務端未重新校驗Cookie當中的用戶權限是否合法時,黑客將獲得一系列提權操作。
Cookie信息泄露
Cookies內容存儲含有用戶密碼,手機號,地址等信息時,Cookie一旦泄露,黑客將獲取到客戶敏感身份信息。
Cookie防護工作原理
Cookie加密
Cookie加密:針對Cookie信息當中存在明文數據或可修改內容進行加密,通過反向代理服務器將Cookie值進行替換,客戶端獲取到的將為加密數據信息,無法進行修改。客戶請求經過代理服務器時,對應Cookie值會進行解密,明文傳輸給源站,保證源站無切換感知。
注意:Cookie內容通過瀏覽器解析后需要展示在客戶端時,請勿使用Cookie加密和HTTP Only選項,會導致瀏覽器無法識別原始Cookie內容、js服務讀取Cookie值。
Cookie簽名
針對Cookie進行簽名,會新增一個Cookie簽名字段,原始Cookie內容正常發送給用戶,當客戶端Cookie內容進行了修改,請求在WAF端簽名校驗不通過,該請求將被攔截。
前提條件
操作步驟
- 登錄。
- 在左側導航欄中選擇【安全能力】,進入【Web應用防火墻】菜單,并在左側域名列表選擇您要防護的域名。
- 進入防護能力-高級安全防護-【Cookie防護】詳細設置頁。
配置說明
防護開關
控制策略生效的總開關,可以選擇關閉、告警或攔截,關閉后Cookie防護將不生效。
防護條件
配置項 說明 Cookie key 值 設置需要防護的Cookie名稱,Cookie必須有參數值,例如:set-cookie: SF_cookie_11=ENCRYPT_COOKIE1988262423afZ5ZEIzbEL%3D; Secure; SameSite=Strict, 只有SF_cookie_11、SameSite可配置為key 防護方式 支持選擇加密與簽名兩種防護方式,需要配置防護動作與防護過渡期
加密:對Cookie值進行加密,客戶端查看到的值為加密后的內容
簽名:給Cookie值加簽名字段,簽名方式可選
UA:使用該方式簽名,客戶UA變換后,Cookie簽名驗證將不通過
IP+HOST+UA:泛域名模式下,加簽HOST字段
IP+UA:使用該方式簽名,客戶IP或使用瀏覽器改變后,使用之前Cookie防護驗證不通過
IP:使用該方式簽名,客戶ip變換后,Cookie簽名驗證將不通過
防護動作 攔截/清除
攔截:Cookie值檢測不通過將攔截請求,并清除Cookie
清除:Cookie檢測不通過清除該Cookie回源,總開關為攔截,防護動作為清除,最終效果仍為清除
防護過渡期 在過渡期內(即在配置的時間之前),檢測失敗不會進行攔截,只會清除Cookie值,重新登錄后將下發新的Cookie值 Cookie屬性 支持選擇HTTP Only和secure
設置后Cookie不允許js讀取,有效防止xss盜取客戶Cookie,配置后,Cookie響應頭部增加值Http Only,若源站響應已存在Http Only,會同時存在
secure:Cookie設置為secure的時候,客戶端只能通過https協議發送Cookie,無法通過http發送

防護白名單
如果有特殊的業務無法通過Cookie防護策略,可以不同粒度的請求進行加白,則符合加白條件的請求不會進行Cookie防護策略。