Laravel CSRF保護
csrf指的是跨網站偽造攻擊網絡應用程序。csrf攻擊是系統的經過身份驗證的用戶執行的未經授權的活動。因此,許多web應用程序都容易受到這些攻擊。
laravel以下列方式提供csrf保護 -
laravel包含一個內置的csrf插件,可為每個活動用戶會話生成令牌。這些令牌會驗證操作或請求是否由有關的已驗證用戶發送。
履行
本節詳細討論了在laravel中實施csrf保護。在繼續進行csrf保護之前,以下幾點值得注意 -
- csrf在web應用程序中聲明的html表單中實現。您必須在表單中包含隱藏的經過驗證的csrf令牌,以便laravel的csrf保護中間件可以驗證請求。語法如下所示 -
{{ csrf_field() }} ...
- 您可以使用javascript http庫方便地構建javascript驅動的應用程序,因為這包括csrf令牌給每個傳出的請求。
- 文件 resources / assets / js / bootstrap.js 注冊了laravel應用程序的所有標記,并包含 meta 標記,它存儲了帶有 axios http庫的 csrf標記 。 **
沒有csrf令牌的表單
考慮以下幾行代碼。他們展示了一個表單,它以兩個參數作為輸入: 電子郵件 和 消息 。
email message
上面顯示的表格將接受來自授權用戶的任何輸入信息。這可能會使web應用程序容易受到各種攻擊。
請注意,提交按鈕包含控制器部分的功能。所述 后接觸 功能在控制器為該關聯視圖使用。如下所示 -
public function postcontact(request $request){ return $request-> all(); }
請注意,表單不包含任何csrf令牌,因此作為輸入參數共享的敏感信息容易受到各種攻擊。
帶有csrf令牌的表單
以下幾行代碼向您展示了使用csrf令牌重新設計的表單 -
{{ csrf_field() }} email message
實現的輸出將返回帶有如下所示令牌的json -
{ "token": "ghfleifxdsuyew9we67877cxnvfjkl", "name": "codingdict", "email": "contact@codingdict.com" }
這是單擊“提交”按鈕時創建的csrf標記。