同站點 cookie 是一種重要的安全機制,可用於減輕 Web 應用程序中的跨站點請求偽造 (CSRF) 攻擊。 當攻擊者誘騙受害者在受害者經過身份驗證的網站上執行意外操作時,就會發生 CSRF 攻擊。 通過利用受害者的會話,攻擊者可以在未經受害者同意的情況下代表受害者執行操作。
同站點 cookie 通過將 cookie 的範圍限制為同一來源來幫助防止 CSRF 攻擊。 來源由協議(例如HTTP 或HTTPS)、域和端口號的組合來定義。 當使用“SameSite”屬性設置 cookie 時,它指定是否應在跨站點請求中發送 cookie。
“SameSite”屬性有三個可能的值:
1.“Strict”:當“SameSite”屬性設置為“Strict”時,僅在來自同一站點的請求中發送 cookie。 這意味著跨站請求中不會發送cookie,有效防止CSRF攻擊。 例如,如果用戶在“example.com”上進行身份驗證並訪問試圖執行 CSRF 攻擊的惡意站點,則瀏覽器將不會在請求中包含“Strict”同站 cookie,從而防止攻擊。
2.“Lax”:當“SameSite”屬性設置為“Lax”時,Cookie 在被認為安全的跨站點請求中發送,例如當請求由用戶的頂級導航觸發時。 但是,cookie 不會在第三方網站發起的請求中發送,例如從另一個域加載圖像或腳本標記時。 這提供了安全性和可用性之間的平衡。 例如,用戶通過鏈接訪問惡意站點不會觸發 CSRF 攻擊,因為“Lax”同站 cookie 不會包含在請求中。
3.“None”:當“SameSite”屬性設置為“None”時,所有跨站請求都會發送cookie,無論其來源如何。 但是,為了確保使用“None”的安全性,cookie 還必須標記為“Secure”,這意味著它只會通過 HTTPS 連接發送。 這種組合允許 Web 應用程序支持跨站點功能,同時仍然防止 CSRF 攻擊。 應該注意的是,“None”值只能在必要時使用,因為它會增加攻擊面和 CSRF 漏洞的可能性。
為了說明如何使用同站點 cookie 來減輕 CSRF 攻擊,請考慮以下場景:允許用戶轉賬的銀行網站。 如果沒有同站點 cookie,攻擊者可能會創建一個包含隱藏表單的惡意網站,該表單會在經過身份驗證的用戶訪問時自動向銀行網站提交資金轉賬請求。 如果用戶的瀏覽器在請求中包含會話cookie,則傳輸將在未經用戶同意的情況下執行。 但是,通過將會話cookie設置為具有“Strict”屬性的同站cookie,瀏覽器將不會在跨站請求中包含該cookie,從而有效防止CSRF攻擊。
同站點 cookie 是一種有價值的安全機制,可用於減輕 Web 應用程序中的 CSRF 攻擊。 通過將 cookie 的範圍限制為同一來源,這些 cookie 可以防止攻擊者利用用戶的會話執行未經授權的操作。 “Strict”值確保 cookie 僅在來自同一站點的請求中發送,而“Lax”值允許在安全的跨站點請求中發送 cookie。 “None”值與“Secure”屬性相結合,可實現跨站點功能,同時仍能防止 CSRF 攻擊。
最近的其他問題和解答 EITC/IS/WASF Web 應用程序安全基礎:
- 在網頁瀏覽器中實作「禁止追蹤」(DNT) 是否可以防止指紋辨識?
- HTTP 嚴格傳輸安全性 (HSTS) 是否有助於防止協定降級攻擊?
- DNS 重新綁定攻擊是如何運作的?
- 當惡意腳本包含在對 Web 應用程式的請求中然後發送回使用者時,是否會發生儲存型 XSS 攻擊?
- HTTPS 是否使用 SSL/TLS 協定建立加密連線?
- 什麼是獲取元數據請求標頭以及如何使用它們來區分同源請求和跨站點請求?
- 可信類型如何減少 Web 應用程序的攻擊面並簡化安全審查?
- 受信任類型中默認策略的目的是什麼?如何使用它來識別不安全的字符串分配?
- 使用可信類型 API 創建可信類型對象的過程是什麼?
- 內容安全策略中的可信類型指令如何幫助緩解基於 DOM 的跨站點腳本 (XSS) 漏洞?
查看 EITC/IS/WASF Web 應用程序安全基礎知識中的更多問題和解答
更多問題及解答:
- 領域: 網路安全
- 程序: EITC/IS/WASF Web 應用程序安全基礎 (前往認證計劃)
- 課: 服務器安全 (去相關課程)
- 主題: 服務器安全:安全編碼實踐 (轉到相關主題)
- 考試複習

