depthbomb/csrf-bundle

此包已被废弃且不再维护。未建议替代包。

为Symfony路由提供简单的CSRF保护

安装: 5

依赖者: 0

建议者: 0

安全性: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.1.0 2023-07-01 02:57 UTC

This package is auto-updated.

Last update: 2023-11-07 02:53:29 UTC


README

Downloads

这是一个基于Symfony安全包构建的简单包,允许您通过CSRF令牌检查轻松保护任何控制器或单独的控制器操作。

安装

$ composer require depthbomb/csrf-bundle

需求

  • PHP >= 8.1
  • Symfony 6.3.x

使用

CsrfBundle 使用属性来保护控制器或控制器方法。这些属性接受一个字符串参数,表示将在请求上验证的CSRF令牌的ID。

<?php namespace App\Controller

// ...
use Depthbomb\CsrfBundle\Attribute\CsrfProtected;

#[CsrfProtected('my token')] // protect entire controllers
class MyController extends AbstractController
{
    // ...

    #[CsrfProtected('my token')] // protect specific actions
    public function myAction(): Response
    {
        // ...
    }
}

然后您可以使用您首选的方法生成CSRF令牌

// in a service/controller
$my_token = $this->tokenManager->getToken('my token');
{# in Twig templates #}
{{ csrf_token('my token') }}

这就完成了!具有该属性的控制器/操作将在事件链早期检查令牌的有效性。当操作需要令牌但未提供时(见下文),则抛出HTTP错误码为428HttpException。如果为受保护的操作提供了令牌且令牌无效,则抛出HTTP错误码为412HttpException

在请求中发送令牌

可以通过几种方式在请求中发送令牌

  • 包含在X-Csrf-Token头中
  • 作为请求有效载荷中的_csrf_token包含
  • 作为查询字符串中的token?token=xxx)包含

注意
这是我第一个Symfony包(以及Composer包)。由于我遇到了寻找创建包的正确和当前方法的问题,此包可能没有正确实现。请告诉我(通过问题或PR)如果有什么事情应该以其他方式完成。