前端面经 关于CSRF攻击的原理和防范

  • CSRF攻击的概念

  • CSRF原理

  • 方法一、验证HTTP Refer字段

  • 方法二、请求地址中添加token并验证

CSRF攻击的概念

========================================================================

CSRF:跨站点请求伪造(cross-site request forgery)。简单来说就是,攻击者借用受害者的身份,向有CSRF漏洞的网站发送恶意请求。

举个例子:

攻击者盗用了受害者的身份,然后借用这个身份发送请求,如转账、购买商品等等。

CSRF原理

=====================================================================

先在这个情节中设定三个对象:

  • 有CSRF漏洞的网站:WebA

  • 攻击者:WebB

  • 受害者:User

其中WebB是攻击者自己做的一个网站,是一个危险网站。

流程如下:

  1. 首先,User是网站WebA的用户,User访问并登录该网站;

  2. 登录验证后,网站WebA自然要给客户端User返回Cookie信息,并保存在浏览器或本地;

  3. User在没有退出WebA的情况下,又去访问了危险网站WebB;

  4. WebB接收到了User的请求,返回一些恶意代码。该恶意代码发出了要访问WebA的请求request;

  5. 因为WebB发出要访问WebA的请求,则带着还保存在浏览器/本地的Cookie,直接去访问WebA;

  6. 由于访问请求一定会带上Cookie给服务器端即WebA,且Cookie实际上已经被攻击者WebB盗用了,所以WebA却无法判断该请求是User还是攻击者WebB发出的。故WebB成功地盗用User的身份,拥有了User访问WebA的权限,以User的身份去访问WebA,以达到攻击的目的。

通过这个例子,我们可以发现,实际上Cookie是不那么安全的。

因为我们无法保证,自己在访问WebA的时候,不会去打开别的网站;也不能保证我们的Cookie信息会过期而不被攻击者盗用。

所以有下面三个方法去防范CSRF攻击

  • 验证HTTP Refer字段

  • 请求地址中添加token并验证

  • 使用验证码

方法一、验证HTTP Refer字段

=================================================================================

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ps://bbs.csdn.net/topics/618191877)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击,击者通过利用用户在已登录的网站上的身份验证凭证,向目标网站发送恶意请求。攻击原理如下: 1. 用户在已登录的网站A上获取了一个身份验证凭证,通常是一个cookie。 2. 攻击者诱导用户访问恶意网站B,网站B上包含了针对网站A的恶意请求。 3. 用户在不知情的情况下,浏览器会自动发送之前获取的身份验证凭证到网站A,执行恶意请求。 预防CSRF攻击的方法有以下几种: 1. 验证来源:服务器端验证请求的来源是否合法,可以通过检查Referer头或使用CSRF Token来实现。Referer头验证可防止一部分攻击,但可能存在被伪造的风险;而CSRF Token是一种随机生成的令牌,将其嵌入到表单或请求参数中,并在服务器端进行验证,可以有效防止CSRF攻击。 2. SameSite属性:通过设置SameSite属性为Strict或Lax,限制cookie只能在同一站点内发送,防止跨站点请求。 3. 双重提交Cookie验证:服务器在生成页面时,在返回给客户端的表单中添加一个隐藏字段,该字段包含了与用户cookie关联的数据。在接收到表单提交请求时,服务器会验证该字段的合法性。 4. 随机化请求参数:在每次请求中都生成一个随机的请求参数,并将其嵌入到请求中,服务器在接收到请求时验证这个参数的合法性。 5. 使用验证码:对于重要操作,可以要求用户输入验证码,增加安全性。 综合采用以上多种预防措施可以有效地减少CSRF攻击的风险。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值