使用CakePHP发送POST请求时的安全问题
我有一个视图使用jQuery将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
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来“提交银行信息”。我正在使用平衡支付卡处理。