跨站請求偽造防護

介紹

跨站請求偽造(CSRF)是一種網路安全漏洞,允許攻擊者誘導使用者執行他們不打算執行的行動。OpenResty Edge 中提供了兩種方式實現 CSRF 防護,包括設定 Cookie 的 SameSite 屬性以及啟用 CSRF token 校驗。

這個動作有以下引數:

  • SameSite:設定 Cookie 的 SameSite 屬性,可以選擇 Strict 或者 Lax
    • Strict:這個選項表示 Cookie 只會在同一站點的請求中被瀏覽器傳送。如果請求的來源和目標不是同一個域名或協議(即使是同一個域名的子域名),Cookie 都不會被髮送。
    • Lax:這個選項表示 Cookie 會在同一站點的請求和從其他站點發起的安全請求(如 GET)中被瀏覽器傳送。但是在從其他站點發起的非安全請求(如 POST、PUT、DELETE 等)中,Cookie 不會被髮送。
  • Cookie names:選填引數,可用於指定需要修改的 Cookie。如果為空,預設會修改所有的 Cookie。

啟用 CSRF token 校驗

注意:該動作僅適用於表單請求,如果 HTML 頁面上使用 AJAX 請求,CSRF token 將無法成功注入,請按需開啟。

啟用後,對於 Content-Typetext/html 的請求,會在響應內容末尾新增一段 JavaScript 程式碼,這段程式碼會自動為頁面中的表單請求引數注入 _edge_csrf_token 引數,以便在發起表單請求時攜帶該引數。而對於 POST/PUT/DELETE 方法的請求,則會檢查請求引數中的 _edge_csrf_token 是否有效,如果引數無效會返回 403 拒絕頁面,同時 會寫入 WAF 日誌記錄當前請求資訊。

該動作可以設定 _edge_csrf_token 引數的有效期,預設為 3600 秒。