CakePHP 3 CsrfProtectionMiddleware是自动的吗?

问题描述 投票:0回答:1

我正在重写一个应用程序以使用大多数CakePHP 3.5的功能。然而,有一件事让我感到难过。我按照描述设置了CsrfProtectionMiddleware,并且可以在生成的表单中看到令牌。

然而,该烹饪书没有描述“检查”发送的请求数据的方法。它似乎只说明如何设置:

$csrf = new CsrfProtectionMiddleware();
$middlewareQueue
    // Catch any exceptions in the lower layers,
    // and make an error page/response
    ->add(ErrorHandlerMiddleware::class)

    // Handle plugin/theme assets like CakePHP normally does.
    ->add(AssetMiddleware::class)

    // Add routing middleware.
    ->add(new RoutingMiddleware($this))
    ->add($cookies)
    ->add($csrf);

收到请求时,是否在启用csrf时由CakePHP 3.5自动执行检查?

cakephp middleware csrf-protection cakephp-3.x
1个回答
2
投票

是的,检查是自动执行的。来自API文档的引用:

此中间件将CSRF令牌添加到cookie。将cookie值与请求数据或每个PATCH,POST,PUT或DELETE请求上的X-CSRF-Token标头进行比较。

如果请求数据丢失或与cookie数据不匹配,将引发InvalidCsrfTokenException。

https://api.cakephp.org/3.5/class-Cake.Http.Middleware.CsrfProtectionMiddleware.html

© www.soinside.com 2019 - 2024. All rights reserved.