4.4 CSRF防御
文章目录
二次确认
- 4.4 CSRF防御
- 二次确认
- Token 认证原理
- Token防御CSRF步骤
- 摘抄
- 在调用某些功能时进行二次验证,
- 如:删除用户时,产生一个提示对话框,提示“确定删除用户吗?”。
- 转账操作时,要求用户输入二次密码,设置验证码,在进行敏感操作时输入验证码。
- 当二次验证后,即使用户打开了 CSRF POC页面,也不会直接去执行,而需要用户再次输 才可以完成攻击。
- 这样,当用户突然收到提示后,可能会心存怀疑,就不再会乖乖地中招。
Token即标志、记号的意思,在IT领域也叫作令牌。
CSRF攻击成功的两个要素:
- 攻击者可得知URL的所有参数项,并了解其含义;
- 诱导用户访问构造好的POC。
验证码的验证思路
- 在服务器端生成验证字符串并保存在 Session中,
- 然后在客户端使用图片显示这段字符串,
- 当用户输入验证码之后交给服务器处理,
- 如果验证码与 Session中的字符串相匹配,
- 就代表验证码正确,可以发起请求,反之亦然。
Token的验证思路
- 当用户登录Web应用程序后
- 首先,服务器端会随机产生一段字符串分配给此用户,
- 并且存储在 Session中,
- 当用户进入某些页面时,直接传递在用户界面或者 Cookie中。
- 如果在HTML中,那么为了用户体验更好,一般都会隐藏起来,如
- 当用户进行提交表单操作时,这段 token代码也会随之被提交。
- 当服务器端接收到数据时,就会判断这段“验证码”是否与 Session中存储的字符串一致,
- 如果一致,则认为是合法的请求
- 如果不一致,则有可能是CSRF攻击。如图所示,表单中就存在一个隐藏的 Token
注意:
有时用户进行一些操作可能不需要提交表单,
比如删除用户操作,仅仅发出一个GET请求即可:
- 这样fom表单中插入 Token就不合适
- 通常会在 Cookie中存储 Token
- 因为无论是GET请求还是POST请求,只要向服务器进行请求,那么一般都会带入 Cookie,
- 这样就解决了GET请求传入 Token值的问题,
第一步 每当用户登录后会随机生成一段字符串,并且存储在 Session中。
第二步 在敏感操作中加入隐藏标签, value即为 Session中保存的字符串,如
确认密码:< input type=" password" name=" password2”/>
< input type="hidden" name="token" va1ue="3a8d9fxos8v8"/>
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?