概觀
revolution/laravel-fetch-metadata 是一個驗證瀏覽器所傳送的Sec-Fetch-* HTTP 標頭的安全性 middleware 套件。可依請求的來源、模式、目的地、是否有使用者操作等條件,控制允許的請求。
透過活用瀏覽器內建的安全性功能,可以在不影響正常使用者體驗的前提下,防止來自非法 origin 的惡意請求。
在 Laravel 13 中,CSRF 保護的 Origin 驗證會使用
Sec-Fetch-Site 標頭。詳細請參閱CSRF 保護。安裝
註冊 middleware 別名
在bootstrap/app.php 註冊 middleware 別名。
Middleware 說明
SecFetchSite
Sec-Fetch-Site 標頭表示請求發生來源與目標 origin 的關係。預設僅允許 same-origin 與 none(直接存取)。
詳細請參閱 MDN 文件。
SecFetchMode
Sec-Fetch-Mode 標頭表示請求的模式。預設允許 navigate 與 cors。
詳細請參閱 MDN 文件。
SecFetchDest
Sec-Fetch-Dest 標頭表示請求的目的地資源類型。
詳細請參閱 MDN 文件。
SecFetchUser
Sec-Fetch-User 標頭表示請求是否由使用者操作而觸發。值僅有 ?1(有使用者操作)。
路由使用範例
基本使用
以參數指定允許的值
指定多個參數
不使用別名
組合多個 middleware
錯誤處理
當Sec-Fetch-* 標頭的值不合法時,會拋出 Symfony\Component\HttpKernel\Exception\BadRequestHttpException。
可在 bootstrap/app.php 中自訂回應。
與 CSRF 保護的關係
在 Laravel 13 中,PreventRequestForgery middleware 作為 CSRF 保護的第一步,會使用 Sec-Fetch-Site 標頭進行 Origin 驗證。本套件可進一步以更細的粒度活用 Fetch Metadata 標頭,強化應用程式的安全性。
詳細請參閱CSRF 保護。
最新資訊請參閱 GitHub 儲存庫。