CSRF跨站请求伪造

CSRF跨站请求伪造

一、CSRF攻击原理概要

CSRF(Cross-Site Request Forgery)是指跨站请求伪造,通常缩写为CSRF或者是XSRF

也可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义进行某些非法操作。CSRF能够使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的财产等

CSRF 与XSS 最大的区别就在于,CSRF并没有盗取cookie而是直接利用

1.CSRF攻击步骤

①目标用户登录受信任网站A,并在本地生成Cookie

②目标用户在不登出A的情况下,访问恶意网站B,或者恶意链接URL,其目的就是想让目标用户在他自己的电脑上执行恶意代码

1

2.CSRF与XSS的区别

XSS:攻击者发现XSS漏洞——构造(获取cookie的)代码——发送给受害人——受害人打开——攻击
者获取受害人的cookie——黑客使用cookie伪造身份进行攻击——完成攻击

攻击者需要登录后台完成攻击

CSRF:攻击者发现CSRF漏洞——构造(发起攻击的)代码——发送给受害人——受害人打开——受
害人执行代码——完成攻击

攻击是管理员(目标用户或受害者)自己实现的,攻击者只负责了构造代码

CSRF少了获取cookie的步骤,为什么会少了呢。因为受害人在执行恶意代码的
时候就已经完成了攻击,而攻击者并没有参与进来

所以,XSS更像是偷钥匙,而CSRF则是趁你自己开门的时候偷偷溜进屋

注:CSRF最关键的是利用受害者的cookie向服务器发送伪造请求,所以如果受害者之前用Chrome浏览器登录的这个系统,而用搜狗浏览器点击这个链接,攻击是不会触发的,因为搜狗浏览器并不能利用Chrome浏览器的cookie,所以会自动跳转到登录界面

二、CSRF漏洞的分类

1.get型

这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用:<img src=http://漏洞地址>

在访问含有这个img的页面后,成功向http://漏洞地址,发出了一次HTTP请求。所以,
如果将该网址替换为存在GET型CSRF的地址,就能完成攻击了

2.post型

这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单,如:

<form action=http://漏洞地址 method=POST>
<input type="text" name="xx" value="11" >
</form>
<script> document.forms[0].submit(); </script>

访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作

三、常见的CSRF方式

1. <img>标签属性

<img src=“http://漏洞地址”>

2.<script>标签属性

<script src=“http://漏洞地址”>

3.<iframe>标签属性

<iframe src=“http://漏洞地址”>

4.JavaScript方法

Image对象

<script>
var foo = new Image();
foo.src = “http://漏洞地址
</script>

四、CSRF漏洞防御

1.增加 增加Token验证(常用做法)

对关键操作增加Token参数,token必须随机,每次都不一样

2.关于安全的会话管理(避免会话被利用)

不要在客户端保存敏感信息(比如身份验证信息)
退出、关闭浏览器时的会话过期机制
设置会话过机制,比如15分钟无操作,则自动登录超时

3.访问控制安全管理

敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
敏感信息的修改使用POST,而不是GET
通过HTTP头部中的REFERER来限制原页面

4.增加验证码

一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

posted @ 2023-01-18 19:59  佐迦  阅读(302)  评论(0编辑  收藏  举报