Yii2.0防御csrf攻击方法
来源:互联网 发布:win7网络登录密码 编辑:程序博客网 时间:2024/06/08 09:04
yii2中无论是用测试工具POSTMAN、用命令行CURL请求、ajax请求总是会得到http400:Bad Request的错误;而如果用Web网页方式GET访问(去除verbFilter的POST限制),是正常的
通过查阅资料发现,这是CRSF验证的原因
原理:
Cookie Hashing, 让服务器发送给客户端的所有表单中都标示一个随机值_csrf,并同时在客户端的COOKIE中保存一个相关联的token;
验证的时候,服务端每次对接收到的请求_POST()过来的一个input hidden _csrf跟客户端的COOKIE中的token进行对照验证
攻击者攻击的原理是利用了客户端的COOKIE,但是攻击者是得不到COOKIE具体的内容的,他只是利用(这里抛开XSS攻击的可能性,由于用户的Cookie很容易由于网站的XSS漏洞而被盗取,这就另外的1%。一般的攻击者看到有需要算Hash值,基本都会放弃了);所以攻击者没法在攻击URL中加入token,这样就无法通过验证。
这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败了
解决方案:
1.禁用CRSF验证(不推荐):'enableCsrfValidation' => false,
1
2
3
4
5
6
'components'
=> [
'request'
=> [
'cookieValidationKey'
=>
'83r5HbITBiMfmiYPOZFdL-raVp4O1VV4'
,
'enableCookieValidation'
=> false,
'enableCsrfValidation'
=> false,
]
2.数据提交时,携带 csrf 信息
a.调用组件ActiveForm时,提交数据会自动带上_csrf
b.ajax提交时可以在头部获取到csrf信息(如下图),与要提交的数据一并提交即可
c.也可以通过php获取csrf信息
1
2
Yii::
$app
->request->csrfParam;(获取csrf-param)
Yii::
$app
->request->csrfToken;(获取csrf-token)
0 0
- Yii2.0防御csrf攻击方法
- yii2框架-yii2的防御csrf攻击机制(十六)
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- 浅谈 CSRF 攻击&&防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- CSRF攻击与防御
- 面向对象的理解
- AUC与ROC
- Java中String、StringBuffer及StringBuilder的区别
- 不懂Ruby的程序员,如何快速读懂Ruby代码
- 损失函数(Loss Function) -1
- Yii2.0防御csrf攻击方法
- Android Studio解决导入项目非常慢的问题
- 【Linux】后台运行进程的命令
- HttpClient4.5
- Stanford机器学习__Lecture notes CS229. Logistic Regression(逻辑回归)(1)
- fir.im Weekly - 做一款 App 需要考虑什么
- mysql 获取当前时间戳
- C#控制台基础 stringbuilder类的对象追加新内容
- Node中Cluster模块API