Cakephp 2.x和Csrf令牌

时间:2017-07-03 18:26:16

标签: php json cakephp

我使用cakephp 2.x激活了安全组件,问题是我禁用了csrf验证我的json请求,如下所示:

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "..."
}

是否可以从beforefilter中删除unlockedActions代码并在json请求中集成csrf验证以及其他非json操作。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您很可能必须禁用POST数据验证,除非您的请求包含使用表单助手构建的表单中的数据:

$this->Security->validatePost = false;

然后您必须在请求POST数据中包含CSRF令牌。生成的令牌可以在请求参数中找到_Token.key

$this->request->param('_Token.key')
// or
$this->request->params['_Token']['key']

并且需要以_Token.key提交,即

{
    "_Token": {
        "key": "keyValue"
    }
}

另见