使用隨機生成的CSRF token:在用戶進行敏感操作時,服務器會生成一個隨機的token并將其與用戶的會話關聯。當用戶提交請求時,服務器會驗證token的有效性,如果token與會話不匹配,則拒絕請求。
驗證Referer頭部:服務器可以驗證請求頭中的Referer字段,確保請求來自合法的頁面。然而,這種方法并不可靠,因為Referer頭部可能被篡改或者被瀏覽器禁用。
使用SameSite屬性:設置cookie的SameSite屬性為Strict或者Lax,這樣可以限制瀏覽器在跨站點情況下發送cookie,從而減少CSRF攻擊的風險。
使用雙重提交cookie策略:在用戶會話中設置一個隨機生成的cookie,并在每個請求中包含這個cookie的值。當用戶提交表單時,服務器會驗證提交的cookie與會話中的cookie是否匹配,以此來防止CSRF攻擊。
驗證請求來源:服務器可以驗證請求的來源是否合法,比如檢查請求頭中的Origin字段或者校驗請求的ip地址。如果請求來源不合法,則拒絕請求。
總的來說,要有效防止CSRF攻擊,需要使用多種方法結合起來,包括使用CSRF token、驗證Referer頭部、設置SameSite屬性、使用雙重提交cookie策略和驗證請求來源等。