Phalcon ajax防 csrf 提交方法
来源:互联网 发布:计时器软件下载 编辑:程序博客网 时间:2024/05/21 06:44
在Form中,为了防止csrf攻击,通常会使用csrf token进行防御,在后台使用$this->security->checkToken()进行检测,但在ajax进行POST提交时,如果不做一些额外的操作,会导致ajax第二次提交时csrf token验证不过。
原因:由于csrf token是每次提交后自动更新的,ajax在第一次提交后,在服务后端csrf token其实已经变了,所以再用原来的key就无法验证通过。
解决方式:需要对页面中的csrf token也进行更新才行。
示例:
后台代码:
public function xxx() { $this->view->disable(); if ($this->security->checkToken()) { echo json_encode( [ 'csrfToken' => [ 'key' => $this->security->getTokenKey(), 'token' => $this->security->getToken() ] ] ); } }
前端代码:
<button id="haha" key="{{ security.getTokenKey() }}" token="{{ security.getToken() }}" class="btn btn-default"> test</button><script type="application/javascript"> $("#haha").click(function () { var key = $("#haha").attr('key'); var token = $("#haha").attr('token'); var post_data = {}; post_data[key] = token; console.log(post_data); $.ajax({ type: 'POST', url: '{{ url('xxx/xxx') }}', data: post_data, dataType: 'JSON', success: function (result) { var res = result['csrfToken']; $("#haha").attr('key', res.key); $("#haha").attr('token', res.token); console.log(res); } }); return false; })</script>
前端在进行提交后,后台会返回下一次要用的token,前端要更新相应的token数据,以便于下一次正确提交!
0 0
- Phalcon ajax防 csrf 提交方法
- 防CSRF攻击方法
- django 程序ajax提交的方法,避免csrf错误
- springMVC 防CSRF攻击的方法
- jquery ajax防重复提交
- 防刷新重复提交、防后退方法
- 防刷新重复提交、防后退方法
- 防刷新重复提交、防后退方法
- 防刷新重复提交、防后退方法
- 防刷新重复提交、防后退方法
- AJAX防重复提交的办法总结
- AJAX防重复提交-多种方式
- AJAX防重复提交的办法总结
- 【强制】表单、 AJAX 提交必须执行 CSRF 安全过滤。
- PHP防csrf攻击
- 防重复提交专题3-2:总结 XSS 与 CSRF 两种跨站攻击
- Asp.net中防刷新重复提交、防后退方法
- Asp.net中防刷新重复提交、防后退方法
- Android中自动跳转到系统设置界面
- Jquery的html方法里包含特殊字符的处理,类似双引号之类的
- GB28181注册流程讲解
- 误删除Oracle家目录的恢复方法
- rawNAND、ClearNAND、eMMC的区别
- Phalcon ajax防 csrf 提交方法
- java synchronized详解
- Android 常用类库
- js中几种实用的跨域方法原理详解
- 二叉树的遍历总结
- nodejs代码初探
- Vue进阶之组件(二)
- ReactNative 侧滑菜单的实现
- linux终端分屏