如何在用户未登录时使用AJAX和CakePHP 3检查CSRF令牌?

Bat*_*sai 1 cakephp cakephp-3.0 cakephp-3.1 cakephp-3.x

所以我让我的网站现场直播,我进入公共领域,人们并不总是很好.我刚刚开始学习CSRF,并发现当我将cakephp 3网站现场直播时,这是我需要的东西.如此处所见!

我将csrf组件和安全组件添加到我的站点,但我有一个主要问题.现在,当用户想要注册时,他们不能.我使用条带的自定义表单来发送付款,但也使用ajax将用户添加到我的数据库.首先添加用户,然后处理付款并将订单保存到数据库.

根据条带文档,我在单击提交按钮后将隐藏值中的标记添加到表单中,并且不禁注意到我的新安全性不允许这种情况发生.

由于我使用ajax将发布数据发送给我的用户控制器并在提交时添加表单输入,

如何在不禁用相关操作的安全性的情况下检查csrf令牌并确保没有安全漏洞?

一个如何做到这一点的例子将非常受欢迎,因为在cakephp 3中似乎缺乏这样做的例子.由于cakephp 3 automagic将标记添加到表单中,因此我很难弄清楚一切是如何工作的.曲奇饼.我不确定如何/在哪里/检查什么.

ecl*_*ude 5

对于pass X-CSRF-Token,请beforeSend在Ajax请求中使用参数,并定义csrfTokencookie的值.

$.ajax({
    url: '/foo/bar',
    type: 'POST',
    dataType: 'HTML',
    data: data,
    beforeSend: function(xhr){
        xhr.setRequestHeader('X-CSRF-Token', csrfToken);
    },
})
.done(function(data) {
    alert('done !');
});
Run Code Online (Sandbox Code Playgroud)