Laravel - CSRF 保護

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

CSRF 是指針對 Web 應用程式的跨站偽造攻擊。 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標籤,該標籤儲存csrf-tokenmeta標籤,該標籤儲存csrf-token

沒有 CSRF 令牌的表單

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


登入後複製



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

Contact Form


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

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

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

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


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

帶有 CSRF 令牌的表單


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

{{ csrf_field() }}
登入後複製


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

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

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

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

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!