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

Linda Hamilton
發布: 2024-11-10 06:38:02
原創
823 人瀏覽過

Protegendo sua Aplicação com CSRF no Lithe

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


什麼是 CSRF?

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


教程結構

  1. 配置 Lithe
  2. 安裝 CSRF 中介軟體
  3. 在後端加入 CSRF 令牌
  4. 在後台查看Token
  5. 透過前端發送令牌
  6. 測試 CSRF 保護

讓我們開始吧!


第 1 步:配置 Lithe

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

composer create-project lithephp/lithephp nome-do-projeto
cd nome-do-projeto
登入後複製
登入後複製

這將為您的 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;

// Configura o middleware CSRF com verificação automática no corpo da requisição
$app->use(csrf([
    'expire' => 600, // Expiração do token após 10 minutos
    'checkBody' => true, // Habilita a verificação automática no corpo
    'bodyMethods' => ['POST', 'PUT', 'DELETE'], // Define os métodos para verificar o CSRF no corpo
]));

$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) {
    // Gera o campo de token CSRF
    $tokenField = $req->csrf->getTokenField();

    // Envia o HTML com o token incluído no formulário
    return $res->send("
        <form method='POST' action='/submit'>
            $tokenField
            <input type='text' name='data' placeholder='Digite algo' required>
            <button type='submit'>Enviar</button>
        </form>
    ");
});
登入後複製
  1. 此路由建立一個包含 CSRF 令牌欄位的表單。此字段為必填字段,以便 Lithe 驗證請求的真實性。

步驟5:在後端驗證Token

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

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

如果令牌無效或遺失,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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板