Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CakePHP发送POST请求时的安全问题_Php_Jquery_Ajax_Cakephp - Fatal编程技术网

使用CakePHP发送POST请求时的安全问题

使用CakePHP发送POST请求时的安全问题,php,jquery,ajax,cakephp,Php,Jquery,Ajax,Cakephp,我有一个视图使用jQuery将POST数据发送到我的控制器,但它失败了,我得到了以下错误: The request has been black-holed The requested address'/settings/submit_bank_info' was not found on this server. 我能让它工作的唯一方法是一起移除控制器中的安全性 这是有关控制器的前置过滤器 public function beforeFilter() { parent::befo

我有一个视图使用jQuery将POST数据发送到我的控制器,但它失败了,我得到了以下错误:

The request has been black-holed 
The requested address'/settings/submit_bank_info' was not found on this server.
我能让它工作的唯一方法是一起移除控制器中的安全性

这是有关控制器的前置过滤器

 public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('help','submit_bank_info');
    $this->Auth->authorize = 'Controller';
}
如果你在cake的文件上看到了这一点

使用安全组件时,必须使用FormHelper 创建表单。此外,您不得覆盖任何 字段的“名称”属性。安全组件查找特定的 由FormHelper创建和管理的指标(尤其是 在create()和end()中创建的。动态更改字段 在POST请求中提交的(例如禁用、删除或删除) 通过JavaScript创建新字段可能会触发 请求的黑洞。请参阅$validatePost或$disabledFields 配置参数


我使用的是2.3.8版。是否有某种方法可以使该操作禁用它,以便为其他操作保留安全组件

尝试停止jQuery并发布表单,并使用firebug跟踪CakePHP随表单发送的隐藏数据,以及他们发送隐藏数据的文档,以防止CSRF攻击

csrfExpires属性可以是与兼容的任何值 strotime()。默认情况下,FormHelper将添加数据[_令牌][key] 在启用组件时,将CSRF令牌包含到每个窗体

尝试捕获隐藏字段并将其与jquery请求一起发送

更新

另外,尝试使用CakePHP生成表单,它将生成数据[_-Token][fields]和数据[_-Token][unlocked]隐藏字段及其密钥:

<?php 
    echo $this->Form->create('formA',array('id'=>'formA'));
    echo $this->Form->input('inputA');
    echo $this->Form->submit();
    echo $this->Form->end();
?> 

这将产生

    <input type="hidden" name="_method" value="POST"/>
    <input type="hidden" name="data[_Token][key]" value="randomValue"/>
    <input type="hidden" name="data[_Token][fields]" value="randomValue"/>
    <input type="hidden" name="data[_Token][unlocked]" value=""/>


在我们的JQuery中,ajax请求
序列化()
表单并发送它。

是/settings/help还是/help有效?是的,但这些不是基于javascript/JQuery的表单。它们是用表单助手构建的。出于几个原因,我不得不使用javascript/jquery来“提交银行信息”。我正在使用平衡支付卡处理。