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

Barbara Streisand
发布: 2024-11-11 01:36:03
原创
860 人浏览过

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