首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【安全】CSRF

【安全】CSRF

作者头像
神仙朱
发布于 2020-02-17 06:55:37
发布于 2020-02-17 06:55:37
84900
代码可运行
举报
运行总次数:0
代码可运行

后面会把前端进阶的课程内容都总结一遍。有些都是很常见的知识,但是为了梳理自己的知识树,所以尽量模糊的地方都会记录

笔记列表在公众号右下角

今天需要记录的是另一大安全知识点 CSRF,是一个非常常见的安全问题

对于我们前端来说,也是必须要掌握的,因为面试会问啊~

好吧,今天需要记录的下面几块内容

1、CSRF 简介

2、CSRF 攻击原理

3、CSRF 防御措施

CSRF 简介

英文全称,Cross Site Request Forgery

中文翻译,跨站请求伪造

按照翻译,已经能理解他做什么事情了

1、跨站。在另一个网站上进行攻击操作

2、请求伪造。假冒用户操作,携带用户信息,伪造请求

CSRF 和 XSS

CSRF 个人感觉一定程度上感觉属于 XSS

CSRF 攻击载体是 请求,XSS攻击 载体是 恶意脚本,CSRF 能做的,XSS 都能做。

所以我感觉 CSRF 属于 XSS,但是他们攻击载体不一样,而且显然CSRF 比 XSS 成本更低,并且难以防范

所以我想这就是他们作为两种安全漏洞存在的原因之一把

CSRF 攻击原理

攻击重点就是,劫持用户的 Cookie

怎么劫持的呢??

下面我们先说个场景

比如现在你有个贴吧账户其中发帖的接口是 http://a.com/addPost

参数 content 是 帖子的内容

如果你发帖内容是 xxx,就会这么请求,http://a.com/addPost?content=xxx

但是这个接口需要携带登录后的 cookie 才能调通,所以你肯定是需要登录的

下面开始攻击步骤

1、你登录了贴吧,服务端返回 cookie,保存在浏览器端

2、有人给你发了一个网站链接 b.com,在这个网站中,调用了发帖接口,内容是 xxxx

3、你手贱,点开了链接,因为你没有退出登录 a.com,b.com 中 就会携带你的 cookie 调用 发帖接口

4、a.com 服务端收到 带有 cookie 的发帖请求,认为是你发送的,那么帖子发送成功,攻击也就成功了

看了上面的步骤,其实还是有一个问题

在 b.com 调用 a.com 的接口,怎么会携带上 a.com 的 cookie?cookie 不是不能跨域访问吗?

没错,的确不能跨域访问,如果你直接在 b.com 中 使用 ajax 请求接口,的确不会携带上 cookie,如下

但是一样有方法,就是利用 script ,img,iframe 等不受同源策略影响的标签对 接口进行请求

比如上面的发帖接口,只要你在 b.com 中加入 img 标签,如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img  src="http://a.com/addPost?content=xxx" />

那么这个img 发起的请求,就会把你的 cookie 给带走

也许你又会问,img 那些只能发 get 请求啊,那 post 请求怎么办?

不用怕,一样可以!!答案就是!!

在 b.com 的页面中,建立表单提交!

然后控制他自动提交就可以了

CSRF 防御措施

上面我们已经讲了攻击的原理了,我们可以绕过同源策略,携带用户cookie伪造请求,冒充用户操作

所以我们必须想出办法来杜绝 CSRF ,不然整天被人假冒

既然是防御,我们就要从他是攻击的特点开始入手

1、跨站

2、利用 cookie 伪造请求

3、隐性请求,用户不知情

针对 CSRF 攻击的 三大特点来逐个击破

1防止跨站

既然他是在别的站点进行请求的发送,那么我只要识别这个请求的来源不就行了?

没错,我们可以获取到请求从哪个网站发起的

怎么获取?

答案就在 请求的 请求头中,有一个 referer 字段,记录了 HTTP 请求的来源地址

所以我们只要拿到 请求头的 referer 信息,验证是否是从我站发起请求,然后才决定是否响应操作

当然这个验证是由服务端完成的,前端只能看戏

比如你从 b.com 发起 a.com/addPost 的 请求,那么请求的 referer 就是 b.com

如果服务端判断 你的 referer 不是 a.com ,那你特么肯定是想攻击我的用户啊,不答应!

告诉黑客

但是这种方法其实还是不太安全,因为黑客甚至可以篡改 Referer 的值。

并且有些用户为了隐私,会设置浏览器不发送 Referer 字段,这样的话,正常操作也会被当成 CSRF 了

所以这种方法没有得到推广

2防止利用cookie伪造请求

CSRF 得逞的原因是什么!??

没错,就是利用 cookie 会随着请求一起发送的基础上,假冒我们去进行操作

所以,我们不用 cookie 不就行了??

cookie 是用来验证登录的,如果不用 cookie 用什么呢?

那就是!我们自己用算法生成一个 token

当用户登录的时候,就给他返回一个 token,然后用户的任何操作都需要带上 token 这个参数

比如登录之后我们的token 是 xxxx,然后我们发帖就会这么发送

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://a.com/addPost? content=xxx & token = xxxx

这个方法是现在最主流最有效的防御 CSRF的方法,因为我们的 token 算法是不公开的,所以

黑客无法计算出 token,并且跨站请求也无法自动携带 token

所以任何跨站的操作都不攻自破

3防止用户不知情

黑客利用跨站请求 假冒用户,一切都是在用户不知情的情况下的

用户不知情下发帖,用户不知情下转账,然后才会默认了请求的发生

那我们让用户知情不就行了?

比如在发帖的时候,需要输入验证码来确认操作

只有验证码正确了,才响应操作。而 CSRF 是无法知道验证码是什么,所以跨站的请求是肯定不会成功了

但是如果任何操作都需要验证码,用户体验也是非常糟糕而来,所以通常我们只会在重要的操作下才会需要输入验证码

比如涉及到金钱,用户安全等等的操作

总结

利用 CSRF 攻击的特点,我们得出了三种防御方式

1、防止跨站,就是 Referer 验证

2、防止利用 Cookie 伪造请求,就是 Token 验证

3、防止用户不知情,就是 验证码验证

所以我们有三种防御的方法,但是在实际情况下我们的防御通常不可能只选择某一种,而是多种方法一起使用,层层保护

比如服务端在处理请求的时候

1、先判断 referer 来过滤一些低级的 CSRF 攻击

2、然后使用 token 来重点防御 CSRF

3、接着在重要的操作下,使用验证码验证用户

最后

鉴于本人能力有限,难免会有疏漏错误的地方,请大家多多包涵, 如果有任何描述不当的地方,欢迎后台联系本人。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 神仙朱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSRF 原理与防御案例分析
CSRF,也称 XSRF,即跨站请求伪造攻击,与 XSS 相似,但与 XSS 相比更难防范,是一种广泛存在于网站中的安全漏洞,经常与 XSS 一起配合攻击。
信安之路
2019/04/25
2.4K0
CSRF 原理与防御案例分析
CSRF跨站请求伪造
跨站请求伪造通常缩写为CSRF或者XSRF,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本XSS相比,XSS利用的是用户对指定网站的信任,CSRF利用的是网站对用户浏览器的信任,浏览器对于同一domain下所有请求会自动携带cookie。
WindRunnerMax
2020/08/27
8050
【基本功】 前端安全系列之二:如何防止CSRF攻击?
当当当当,我是美团技术团队的程序员鼓励师美美~“基本功”专栏又来新文章了,本篇是我们前端安全系列文章的第二篇,主要聊聊前端开发过程中遇到的CSRF问题,希望对你有帮助哦~
美团技术团队
2019/03/22
2.1K0
【基本功】 前端安全系列之二:如何防止CSRF攻击?
网络安全之【XSS和XSRF攻击】
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。
后端技术探索
2018/08/09
1.6K0
浅说 XSS 和 CSRF
在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。本文将会简单介绍 XSS 和 CSRF 的攻防问题。
grain先森
2019/03/28
1.2K0
浅说 XSS 和 CSRF
【安全】573- 大前端网络安全精简指南手册
DOM型和反射性都是通过诱导用户点击链接执行,并且都是临时型的,但是反射型属于服务端安全漏洞而DOM型属于客户端安全漏洞
pingan8787
2020/04/26
7180
跨站请求伪造—CSRF
CSRF,是跨站请求伪造(Cross Site Request Forgery)的缩写,是一种劫持受信任用户向服务器发送非预期请求的攻击方式。
FEWY
2019/11/27
1.5K0
CSRF攻击与防御,Web安全的第一防线(源码,实战,5分钟科普文)
跨站请求伪造,也被称为“OneClick Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
HACK学习
2019/08/07
9500
CSRF攻击与防御,Web安全的第一防线(源码,实战,5分钟科普文)
XSS、CSRF/XSRF、CORS介绍「建议收藏」
XSS,即:Cross Site Script,中译是跨站脚本攻击;其原本缩写是 CSS,但为了和网站前端技术领域——层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS。
全栈程序员站长
2022/08/30
1.9K0
前端网络安全 常见面试题速查
XSS 安全漏洞 简单转义是否有防护作⽤ HTML 标签⽂字内容 有 HTML 属性值 有 CSS 内联样式 ⽆ 内联 JavaScript ⽆ 内联 JSON ⽆ 跳转链接 ⽆
Cellinlab
2023/05/17
8610
Web安全(三)---CSRF攻击
攻击者盗用了你的身份(TOKEN或Cookie等认证),以你的名义往服务器发请求,这个请求对于服务器来说是完全合法的,但是却完成了攻击者所希望的操作,而你全然不知,例如:以你的名义发送邮件,转账之类的操作
Autooooooo
2020/11/07
9610
Web安全之CSRF实例解析
跨站请求伪造(Cross Site Request Forgery),是指黑客诱导用户打开黑客的网站,在黑客的网站中,利用用户的登陆状态发起的跨站请求。CSRF攻击就是利用了用户的登陆状态,并通过第三方的站点来做一个坏事。
前端迷
2020/07/07
1.5K0
Web安全之CSRF实例解析
CSRF简析
csrf漏洞称为"跨站请求伪造",跟XSS一样,属于web攻击的一种,CSRF利用服务器对用户网页浏览器的信任,而XSS利用的是用户对网页,服务器的信任,要区分开
vFREE
2021/12/20
7600
CSRF简析
让我们来深入了解下 CSRF
“好事”文章推荐:🚀 详解 Helm 部署 Ingress-NGINX:从零到一的全面指南
写bug的高哈哈
2024/11/13
2170
让我们来深入了解下 CSRF
CSRF攻击原理介绍和利用
注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。
全栈工程师修炼指南
2020/10/23
4.8K0
CSRF攻击原理介绍和利用
CSRF攻击与防御
跨站请求伪造(Cross-site request forgery)简称为 CSRF。这种攻击方式很奇特,它是伪造用户的请求发动攻击的,在 CSRF 攻击过程中,用户往往在不知情的情况下构造了网络请求。
多云转晴
2020/07/10
2.1K0
CSRF/XSRF概述
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,一般是攻击者冒充用户进行站内操作,它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则是伪装成受信任用户的请求来访问操作受信任的网站。
全栈程序员站长
2022/08/31
1.9K0
前端安全
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/09/14
3060
web之攻与受(CSRF篇)
如图用户通过源站点页面可以正常访问源站点服务器接口,但是也有可能被钓鱼进入伪站点来访问源服务器,如果伪站点通过第三方或用户信息拼接等方式获取到了用户的信息(如cookie),直接访问源站点的服务器接口进行关键性操作(例如支付扣款或返回用户隐私信息等操作),此时如果源站点服务器未做校验防护,伪站点的请求操作就可以被成功执行。另一种情况则可能是盗刷源站点的登录等接口来暴力破解用户密码的情况,如果源站点不添加防护措施,用户信息就极可能被盗取。
一粒小麦
2019/09/05
7170
web之攻与受(CSRF篇)
一文搞懂Web常见的攻击方式
Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为
@超人
2021/07/05
1.1K0
一文搞懂Web常见的攻击方式
相关推荐
CSRF 原理与防御案例分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档