如何在CakePHP 3.4上将CSRF cookie设置为samesite?

如何在CakePHP 3.4上将CSRF cookie设置为samesite?,php,cakephp,Php,Cakephp,我使用的是CakePHP 3.4(无法升级),为了保护系统不被跨站点请求伪造,我需要将CSRF令牌cookie设置为SameSite=Strict。然而,这个版本的CakePHP似乎无法处理这样的设置 我尝试过使用CsrfComponent类并在AppController中加载该组件 $this->loadComponent('Csrf', [ 'secure' => true, 'httpOnly' => true,

我使用的是CakePHP 3.4(无法升级),为了保护系统不被跨站点请求伪造,我需要将CSRF令牌cookie设置为SameSite=Strict。然而,这个版本的CakePHP似乎无法处理这样的设置

我尝试过使用CsrfComponent类并在AppController中加载该组件

$this->loadComponent('Csrf', [
            'secure' => true,
            'httpOnly' => true,
        ]);

如何将此cookie设置为SameSite=Strict或另一种可防止跨站点请求伪造的替代方案?

在CakePHP 3.9.3中,添加了对SameSite with CSRF cookies的支持,但您必须切换到CSRF保护中间件

如果无法升级,则需要一些自定义代码,即接受属性的进一步选项的自定义/扩展CSRF组件,以及使用该属性创建cookie的自定义/扩展响应对象

在PHP7.3之前的PHP版本中,您可以通过使用cookie path hack来分别注入
SameSite
属性,这包括通过简单地用分号关闭的路径向路径附加更多的cookie属性。在PHP7.3的PHP版本中,您将使用当时支持的
samesite
for

顺便说一句,对于会话cookie,您需要相应地修改您的
session.cookie\u path
session.cookie\u samesite
PHP INI选项,CakePHP中设置cookie的其他地方也可能需要进行调整,例如,即使您的应用程序不使用它,它也可能被第三方插件使用

例如:


取决于a)您的PHP版本,以及b)您未来可能的升级计划?另外,到底是什么阻止了您升级到至少最新的3.x?目前在PHP7.0上,anc无法升级CakePHP,因为该项目太大,太旧,更新需要花费大量人力来适应所有不推荐的内容。