CSRF 的传统修复方式

几天前,在阅读一篇极为专业的渗透测试报告时,发现了安全人员汇报了一个严重又常见的问题:CSRF 跨站请求伪造,诚然由于开发者的疏忽,产生 CSRF 的问题的确比较严重,好在发现的早我们可以尽早修复。安全人员是这样建议的:

The application should implement anti-CSRF tokens into all requests that perform actions which change the application state or which add/modify/delete content. An anti-CSRF token should be a long randomly generated value unique to each user so that attackers cannot easily brute-force it. It is important that anti-CSRF tokens are validated when user requests are handled by the application. The application should both verify that the token exists in the request, and also check that it matches the user’s current token. If either of these checks fails, the application should reject the request.

使用 anti-CSRF token 是防御 CSRF 的有效手段之一,安全人员的建议也很照本宣科的,很多 web 框架与编程语言都类似的实现方式,例如:

<form method="POST" action="/profile"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>...
</form>

或者使用 cookie / meta 与 ajax 全局设置,例如:

// 在 HTML 里面塞入这个 meta
<meta name="csrf-token" content="{{ csrf_token() }}">$.ajaxSetup({headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});

**核心思路是,使用一个由服务器派发的 token,在前端进行状态修改时,也同时提交这个 token(往往会放在 html form 的 input 中,或者 ajax header 中),这时候服务端验证该 token 是否是之前所生成的,以此来判断这个请求是否被允许。**所以,当用户点击 hacker 所提供的三方网站时,这些恶意网站无论如何也无法获取到之前服务端生成 token,这样的话,即使请求可以发送至服务端,也不会通过验证。关于 CSRF 与 anti-CSRF Token 的具体机制本篇不再赘述,请参考这篇文章,此外,防范 CSRF 是一个稍微复杂的实践,还可以使用 referer、origin 等其他手段进行深度防御,而且一定是根据具体现状的考虑。

按照这位安全人员的建议,我们应该在渲染 form 时&#

CSRF - 前后端分离后带来的新问题相关推荐

  1. 前后端分离后的前端时代

    什么是前后端分离,要区分前端和后端,需要有个明确的界限.一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了. 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的 ...

  2. 前后端分离后的前端时代 1

    本文从前端开发的视角,聊一聊前后端分离之后的前端开发的那些事儿.阅读全文,大约需要8分钟. 什么是前后端分离 除了前端之外都属于后端了. 你负责貌美如花,我负责赚钱养家 在传统的像ASP,JSP和PH ...

  3. 前后端分离后的前端时代,使用前端技术能做哪些事?

    什么是前后端分离,要区分前端和后端,需要有个明确的界限.一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了. 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的 ...

  4. 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案

    近几年随着react.angular.vue等前端框架兴起,前后端分离的架构迅速流行.但同时权限控制也带来了问题.网上很多前.后端分离权限仅仅都仅仅在描述前端权限控制.且是较简单.固定的角色场景,满足 ...

  5. springboot前后端分离后权限原理浅谈

    1. 需求描述 最近在梳理springboot前后端分离后的权限管理问题.前段时间,已经把shiro的实现和spring security 的实现进行了初步的了解.如果深入细节,一个篇幅怕是不够.本文 ...

  6. 前后端分离后产生的跨域问题sessionid丢失,cookies无法写入等

    文章目录 前言 一.会话机制 1. 何为一次会话,会话从什么时候开始,从什么时候结束? 2.cookies如何保持会话,它的工作流程? 3.session原理分析: 实例记录sessionid变化(前 ...

  7. 若依前后端分离如何写移动端接口_前后端分离后,如何定义接口规范~

    小Hub领读: 前后端分离的趋势下,该怎么定义规范,来学习学习吧哈! 作者:猿码架构 www.jianshu.com/p/c81008b68350 1. 前言 随着互联网的高速发展,前端页面的展示.交 ...

  8. 扎心一问!为什么前后端分离后,你比从前更痛苦?

    作者:谢小呆 https://my.oschina.net/xbl/blog/2246297 写在前面 你有没有遇到过: 前端代码刚写完,后端的接口又变了 接口文档永远都是不对的 测试工作永远只能临近 ...

  9. 前后端分离后 前端获得session数据_机器学习模型部署--打通前后端任督二脉

    ## 前言 ### 学历与定位 近日在某论坛,有网友提问道:搞机器学习是不是要博士或是硕士学历,是不是要求很高,顶会论文?本科生或者更低学历的,是不是就没有机会了?从最近公司的招聘来看,算法工程师的 ...

最新文章

  1. ztree 默认选中节点_用户管理、角色管理、模块管理、zTree的使用
  2. redis 的雪崩和穿透?
  3. Jmeter-基础篇
  4. 专注于 web报表, web打印, 自定义web表单, web工作流管理系统 方面的技术
  5. DDD 领域驱动设计落地实践:六步拆解 DDD
  6. python能自学成功吗-为什么那么多自学Python的后来都放弃了,总结起来就这些原因...
  7. 切断数据感知控件,大大提升软件运行速度
  8. yii、yaf、ci等php框架性能对比
  9. Windows Phone开发(25):启动器与选择器之WebBrowserTask 转:http://blog.csdn.net/tcjiaan/article/details/7404770...
  10. 南航计算机科学与技术学院老师,南航计算机科学与技术学院导师介绍:孙涵
  11. office文档图标显示不正常
  12. 从逻辑功能上看 可以把计算机网络分成,从逻辑功能上看,可以把计算机网络分成通信子网和资源子网。...
  13.  Kaggle基本知识
  14. 有哪些超好用的邮件群发软件?这款做邮件推广的一定要试试!
  15. 设计项目全生命周期管理系统构建与实践
  16. 基于用户电影评价的分析预测
  17. 数据库连接失败: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
  18. php mysql开发实战 光盘_随书光盘-PHP开发实战1200例 | 软件库
  19. 核心之外的8个必备Maven插件
  20. 小程序的应用场景有哪些?小程序实际应用分析

热门文章

  1. 汽车电子行业入门指南「汽车行业的英语要求与学习方法」
  2. python曲线画法(PR曲线为例)
  3. 关于IBGP邻居创建的尝试
  4. GBase 8s中RPAD函数的用法
  5. 控制台获取键盘按键消息
  6. 泰雷兹与南航加强合作伙伴关系,为其80多架飞机提供航电设备
  7. html + css + javascript 写的程序员表白代码
  8. IDEA的使用2:最重要的步骤
  9. Dart(10)-接口
  10. php rssi计算公式,蓝牙rssi距离计算公式及代码