在 Lithe 中使用 CSRF 保護您的應用程式

Barbara Streisand
發布: 2024-11-11 01:36:03
原創
818 人瀏覽過

Protecting Your Application with CSRF in Lithe

在本教程中,我們將學習如何在 Lithe 中實現 CSRF(跨站請求偽造)保護,以防止向您的應用程式發出不需要的請求。本指南是為初學者設計的,所以我們將一步一步來!


什麼是 CSRF?

CSRF(即跨站請求偽造)是一種攻擊,其中使用者被誘騙在經過身份驗證的網站上執行未經授權的操作。這種攻擊很危險,因為攻擊者可以操縱資料或存取受限區域。為了防止這種情況,我們添加了一個安全層來阻止可疑請求的處理。


教程結構

  1. 設定輕盈
  2. 安裝 CSRF 中介軟體
  3. 在後端加入 CSRF 令牌
  4. 在後端驗證Token
  5. 從前端發送令牌
  6. 測試 CSRF 保護

讓我們開始吧!


第 1 步:設定 Lithe

如果您尚未設定 Lithe,請先使用以下指令安裝框架:

composer create-project lithephp/lithephp project-name
cd project-name
登入後複製
登入後複製

這將為您的 Lithe 專案創建一個基本結構。


步驟2:安裝CSRF中介軟體

CSRF 中間件有助於產生和驗證 CSRF 令牌。要安裝它,請在專案中的終端機中執行以下命令:

composer require lithemod/csrf
登入後複製
登入後複製

步驟3:配置CSRF中介軟體

現在,我們需要告訴 Lithe 我們想要使用 CSRF 中介軟體。開啟主檔案 src/App.php 並新增 CSRF 中介軟體。

use Lithe\Middleware\Security\csrf;
use function Lithe\Orbis\Http\Router\router;

$app = new \Lithe\App;

// Configure the CSRF middleware with automatic checking in the request body
$app->use(csrf([
    'expire' => 600, // Token expiration after 10 minutes
    'checkBody' => true, // Enables automatic checking in the body
    'bodyMethods' => ['POST', 'PUT', 'DELETE'], // Defines the methods for checking CSRF in the body
]));

$app->use(router(__DIR__ . '/routes/web'));

$app->listen();
登入後複製

這樣,CSRF 中間件就在我們的應用程式中處於活動狀態,而每個需要保護的請求都必須包含有效的令牌。


第4步:產生CSRF令牌

要使用 CSRF 保護,我們需要產生一個唯一的令牌並將其包含在請求中。我們將建立一個路由來發送自動包含 CSRF 令牌的表單。

  1. 建立一個名為 src/routes/web.php 的文件,並新增帶有 CSRF 令牌欄位的表單路由。
use Lithe\Http\{Request, Response};
use function Lithe\Orbis\Http\Router\get;

get('/form', function (Request $req, Response $res) {
    // Generate the CSRF token field
    $tokenField = $req->csrf->getTokenField();

    // Send the HTML with the token included in the form
    return $res->send("
        <form method='POST' action='/submit'>
            $tokenField
            <input type='text' name='data' placeholder='Type something' required>
            <button type='submit'>Submit</button>
        </form>
    ");
});
登入後複製
  1. 此路由建立一個包含 CSRF 令牌欄位的表單。此字段為必填字段,以便 Lithe 檢查請求的真實性。

步驟5:在後端驗證Token

提交表單後,Lithe 會自動檢查 token 是否有效。現在,讓我們建立接收和處理表單的路由。

  1. 在同一個檔案 src/routes/web.php 中,新增處理表單提交的路由。
composer create-project lithephp/lithephp project-name
cd project-name
登入後複製
登入後複製

如果令牌無效或遺失,Lithe 將自動阻止請求並傳回錯誤。


第 6 步:使用 CSRF 令牌發送請求

在前端,每​​當您需要發送 POST 請求(或其他資料變更方法)時,在請求正文或標頭中包含 CSRF 令牌非常重要,具體取決於您如何配置中間件。

JavaScript Fetch API 範例

對於使用 JavaScript 的用戶,以下是如何透過取得請求發送令牌的範例:

composer require lithemod/csrf
登入後複製
登入後複製

步驟7:測試CSRF保護

  1. 在瀏覽器中存取 /form 路由。您將看到包含 CSRF 令牌的表單。
  2. 填寫欄位並提交表格。
  3. 如果一切正常,您將看到一條包含已傳送資料的成功訊息。

總結和最終考慮因素

在本教學中,我們學習了:

  • CSRF 是什麼以及它為何重要。
  • 如何在 Lithe 中設定 CSRF 中介軟體。
  • 如何在後端產生和驗證 CSRF 令牌。
  • 如何透過表單和 AJAX 請求發送 CSRF 令牌。

實施此保護後,您的應用程式可以更安全地抵禦 CSRF 攻擊,有助於保護使用者資料的完整性。

更多詳細信息,請查看 Lithe 官方文件。

以上是在 Lithe 中使用 CSRF 保護您的應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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