首頁 > php框架 > Laravel > 主體

Laravel - CSRF 保護

王林
發布: 2024-08-27 13:24:38
原創
636 人瀏覽過

CSRF 是指針對 Web 應用程式的跨站偽造攻擊。 CSRF 攻擊是由系統經過驗證的使用者執行的未經授權的活動。因此,許多 Web 應用程式很容易受到這些攻擊。

Laravel 透過以下方式提供 CSRF 保護 -

Laravel 包含一個內建的 CSRF 插件,可為每個活動使用者會話產生令牌。這些令牌驗證操作或請求是否由相關的經過身份驗證的使用者發送。

實作

本節詳細討論 Laravel 中 CSRF 保護的實作。在進一步進行 CSRF 保護之前,請注意以下幾點 -

  • CSRF 是在 Web 應用程式內聲明的 HTML 表單中實現的。您必須在表單中包含隱藏的經過驗證的 CSRF 令牌,以便 Laravel 的 CSRF 保護中介軟體可以驗證請求。文法如下圖 -

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
登入後複製
  • 您可以使用 JavaScript HTTP 程式庫方便地建立 JavaScript 驅動的應用程序,因為這包括每個傳出請求的 CSRF 令牌。

  • 檔案即resources/assets/js/bootstrap.js註冊了所有Laravel 應用程式的令牌,並包含 meta 標籤,該標籤儲存 csrf-tokenmeta 標籤,該標籤儲存 csrf-token

沒有 CSRF 令牌的表單

考慮以下程式碼行。它們顯示了一個表單,該表單接受兩個參數作為輸入:emailmessage

<form>
   <label> Email </label>
      <input type = "text" name = "email"/>
      <br/>
   <label> Message </label> <input type="text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>
登入後複製



上述程式碼的結果是最終使用者可以查看的如下所示的表單 -

Contact Form


上面顯示的表單將接受來自授權使用者的任何輸入資訊。這可能會使 Web 應用程式容易受到各種攻擊。

請注意,提交按鈕包含控制器部分中的功能。 postContact

函數在關聯視圖的控制器中使用。如下圖 -

public function postContact(Request $request) {
   return $request-> all();
}
登入後複製


請注意,該表單不包含任何 CSRF 令牌,因此作為輸入參數共享的敏感資訊很容易受到各種攻擊。

帶有 CSRF 令牌的表單


以下程式碼行向您展示了使用 CSRF 令牌重新設計的表單−

<form method = ”post” >
   {{ csrf_field() }}
   <label> Email </label>
   <input type = "text" name = "email"/>
   <br/>
   <label> Message </label>
   <input type = "text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>
登入後複製


實現的輸出將傳回帶有令牌的 JSON,如下所示 -

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@tutorialspoint.com"
}
登入後複製

這是點擊提交按鈕時所建立的 CSRF 令牌。 🎜

以上是Laravel - CSRF 保護的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板