csrf攻击原理及防范

薄洪涛7年前PHP1667
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

在不少的php框架中都有防csrf攻击的方法,比如yii2.0,建议在开发的时候尽量不要全局关闭。

你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。

CSRF能够做的事情包括:以你名义发送邮件,转账,付款

攻击原理图:

clipboard.png

一次攻击的两个步骤:
      1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。
譬如某网站A的关键操作是www.test.com?a=1
假如你登陆了A网站,没退出,又登陆了B网站,B网站中恰好有这么一段代码
<img src = www.test.com?a=1>

那就直接执行了A网站的关键操作

上诉我们描述了get请求时的csrf攻击,即使不是get提交,我们也可以用js或者其他工具模拟请求方式

防御:
CSRF的防御一般都在服务器端进行验证,常用的防御措施如下:
1.Cookie Hashing(表单都要包含一串Hash值做验证):表单中加一个隐藏值,提交表单在服务器端验证;

2.每次关键提交操作,加一个验证码或者其他验证手段(比如app端二次验证),但是不是很友好;

3.通过用户传递的token,referer来检测

4.严格设置cookies域(避免全站通用)


标签: csrf攻击

相关文章

PHP程序猿食用RabbitMQ方法

消息队列是什么?“消息队列”是在消息的传输过程中保存消息的容器。“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。“消...

YII2场景值的使用

开发的时候添加和编辑写在了一个方法里面,上传图片添加的时候需要验证为空,编辑的时候不需要,这时候yii的场景值能够解决这个问题:控制器中$model = new News...

phpstorm配置xdebug

phpstorm配置xdebug

1、首先写个phpinfo文件,然后访问,查看是否有xdebug扩展,如果没有请查看第二步,有的话直接第三步2,安装xdebug扩展,首先复制phpinfo页面所有(phpinfo页面直接ctrl+a...

redis持久化的两种方式

redis持久化的两种方式

redis为了内存数据的安全考虑,会把内存中的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。数据保存到硬盘的过程就称为“持久化”效果。redis支持...

Yii2使用phpOffice导出excel报错

Yii2使用phpOffice导出excel报错

线上导出excel的时候,是不是出现无法访问,如下图因为导出的数据量比较大,我怀疑是内存溢出,于是增加了内存分配值,发现仍然报错,于是我查了下日志,如下2020-08-14 21:31:12...

Yii2.0 文件队列的使用

最近做了一个文件上传+处理的功能,需求是这样的,上传并读取.doc文件,并解析里面的内容入库读取文件并入库是使用python处理的,每个文件大约需要处理5-6秒,上传是使用的Yii2,我这里的思路是把...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。