跨站请求伪造CSRF

CSRF概念

CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求利用受害者在被攻击网站已经获取的注册凭证绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

跨站请求伪造, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

CSRF漏洞的本质是浏览器在不应该发送cookie的地方发送cookie。

cookie相关知识:

1、cookie的属性:key、value、expires、domain、path、secure、httponly、samesite

2、只要有请求就会携带cookie

3、cookie无法验证是从哪个网站过来的

4、cookie遵守的是同站策略不是同源策略

CSRF攻击流程

CSRF攻击过程有以下两个重点:

1.目标用户已经登录了网站,能够执行网站的功能

2.  

    

1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

CSRF的常见攻击

GET类型的CSRF

1  <img src="攻击方让受害者做的网站请求" >

POST类型的CSRF

1  <form action="攻击方让受害者做的网站请求" method=POST>

2     <input type="hidden" name="account" value="xiaoming" />

3     <input type="hidden" name="amount" value="10000" />

4     <input type="hidden" name="for" value="hacker" />

5  </form>

6  <script> document.forms[0].submit(); </script>

链接类型的CSRF

1  <a href="攻击方让受害者做的网站请求" taget="_blank">

2  重磅消息!!

3  <a/>

CSRF攻击案例

WordPress的CSRF漏洞

YouTube的CSRF漏洞

Gmail的CSRF漏洞

CSRF的特点危害

攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。

攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据。

整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。

跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。

发送恶意请求消息

配合蠕虫扩散

盗取信息

CSRF的防范

用户跳转第三方网页的提示

阻止不明外域的访问

同源检测

在HTTP协议中,每个异步请求都会携带两个Header用于标记来源域名:

  • Origin Header
  • Referer Header

这两个Header在浏览器发起请求时,大多数情况会自动带上,并且不能由前端自定义内容。 服务器可以通过解析这两个Header中的域名,确定请求的来源域。

Origin 指示了请求来自于哪个站点,只有服务器名,不包含路径信息,浏览器自动添加到http请求 Header 中,无需手动设置

Referer 指示了请求来自于哪个具体页面,包含服务器名和路径的详细URL,浏览器自动添加到http请求 Header 中,无需手动设置。

提交时要求附加本域才能获取的信息

Token

双重Cookie

samesite

Strict

Lax

CSRF的总结

cookie的合理利用

token的利用

用户跳转第三方网页的提示

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值