在本教程中,我們將學習如何在 Lithe 中實現 CSRF(跨站請求偽造)保護,以防止在您的應用程式中發出不需要的請求。本指南是為初學者設計的,所以讓我們分成幾個部分來學習!
CSRF(即跨站請求偽造)是一種攻擊,其中使用者被誘騙在經過身份驗證的網站上執行未經授權的操作。這種攻擊很危險,因為攻擊者可以操縱資料或存取受限區域。為了防止這種情況,我們添加了一個安全層來防止可疑請求被處理。
讓我們開始吧!
如果您尚未設定 Lithe,請先使用下列指令安裝框架:
composer create-project lithephp/lithephp nome-do-projeto cd nome-do-projeto
這將為您的 Lithe 專案創建一個基本結構。
CSRF 中間件有助於產生和驗證 CSRF 令牌。若要安裝,請在專案的終端機中執行以下命令:
composer require lithemod/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 中間件就在我們的應用程式中處於活動狀態,而每個需要保護的請求都必須包含有效的令牌。
要使用 CSRF 保護,我們需要產生一個唯一的令牌並將其包含在請求中。讓我們建立一個路由來提交自動包含 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> "); });
提交表單後,Lithe 會自動檢查 token 是否有效。現在,讓我們建立將接收和處理表單的路由。
composer create-project lithephp/lithephp nome-do-projeto cd nome-do-projeto
如果令牌無效或遺失,Lithe 將自動阻止請求並傳回錯誤。
在前端,每當您需要發送 POST 請求(或其他資料變更方法)時,在請求正文或標頭中包含 CSRF 令牌非常重要,具體取決於您配置中間件的方式。
對於使用 JavaScript 的用戶,以下是如何透過取得請求發送令牌的範例:
composer require lithemod/csrf
在本教學我們學習:
有了這種保護,您的應用程式就可以更安全地抵禦 CSRF 攻擊,有助於保護使用者資料的完整性。
有關更多詳細信息,請查看 Lithe 官方文件。
以上是在 Lithe 上使用 CSRF 保護您的應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!