首页 > 后端开发 > php教程 > 在 Lithe 上使用 CSRF 保护您的应用程序

在 Lithe 上使用 CSRF 保护您的应用程序

Linda Hamilton
发布: 2024-11-10 06:38:02
原创
883 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板