CSRF 攻击

devtools/2024/9/22 10:56:00/

什么是 CSRF ?

  • CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击,是一种常见的网络攻击方式,它利用用户在已登录网站的凭证(如 Cookie、Session 等)向第三方网站发送非授权的请求。这种攻击之所以有效,是因为浏览器会自动携带用户在 A 网站的认证信息去访问 B 网站,如果 B 网站没有做好防护措施,就会误以为该请求是用户主动发起的并予以执行,从而可能执行恶意操作,如修改用户数据、进行非法转账等。

CSRF 攻击的基本流程:

  1. 用户登录: 用户登录到受信任的网站 A,并在本地生成了认证信息(Cookie)。
  2. 恶意链接构造: 攻击者构造一个包含恶意操作的 URL,该 URL 针对网站 B,且该操作需要用户已经登录的状态才能执行。
  3. 诱导用户点击: 攻击者通过邮件、社交媒体、即时消息等方式诱使用户点击这个恶意链接。
  4. 浏览器发送请求: 用户在不知情的情况下,浏览器带着在 A 网站的认证信息自动向 B 网站发送了请求。
  5. 恶意操作执行: 如果 B 网站没有验证请求是否由用户自己发起,那么它可能会误以为这是用户的真实意图,从而执行恶意操作。

如何确定一个接口地址有没有 CSRF 漏洞?

  • 拿到接口地址,抓取到接口的数据,在三方网站中再次发送请求,看是否能成功。如果成功,就可以确定存在 CSRF 漏洞。

如何防御 CSRF 漏洞?

  1. 使用安全的 HTTP 方法:对于修改数据的请求,使用 POST 而不是 GET。GET 请求的结果可以被缓存,并且可以被浏览器预加载,这会增加 CSRF 攻击的风险。

  2. 敏感操作增加二次确认:对于涉及重要操作的请求,例如转账、删除账户等,可以要求用户进行二次确认,以降低误操作的风险。

  3. 同源策略:确保网站的关键操作只能在同一个域名下执行。这样即使攻击者能够构造恶意请求,也无法在用户不知情的情况下执行它们。

  4. 限制敏感操作:对于涉及敏感操作(如更改密码、删除账户等)的请求,应该要求用户输入密码或进行其他形式的身份验证,以确保请求的合法性。

  5. 使用 CSRF 令牌:服务器在每个敏感操作的表单中嵌入一个随机生成的、一次性的 CSRF 令牌(Token)。提交表单时,此令牌也会一并提交,服务器验证提交的令牌与存储在会话中的令牌是否一致,确保请求的合法性。

  6. 验证 HTTP Referer 或 Origin 头部:虽然这个方法有局限性,但在某些情况下,检查请求的 Referer 或 Origin 头部可以作为一种辅助手段,确认请求是否来自可信赖的源。但是要注意,攻击者可能伪造这些头部,因此不能单独依赖此方法。

CSRF 和 XSS 的区别?

CSRF(Cross-Site Request Forgery):

  • 攻击目的:CSRF 的主要目的是欺骗已登录用户在不知情的情况下执行攻击者期望的操作,如转账、更改密码等。
  • 实现方式:攻击者通过诱骗用户点击恶意链接或访问嵌入恶意代码的网页,利用用户浏览器中对目标网站的有效会话(Cookie)发起非授权请求。
  • 用户状态要求:为了成功,CSRF 通常需要用户已经在目标网站上登录,并拥有有效的会话信息。
  • 攻击特征:相对隐蔽,用户往往不易察觉,因为请求看起来像是正常浏览的一部分。
  • 防护措施:通常采用 Token 验证、Referer 检查、SameSite Cookie 属性等方法。

XSS(Cross-Site Scripting):

  • 攻击目的:XSS 攻击旨在通过注入恶意脚本到网页中,当用户浏览该页面时,恶意脚本将在用户的浏览器上执行,进而盗取用户信息、操纵页面内容或重定向用户等。
  • 实现方式:攻击者通过各种手段将恶意脚本嵌入到网站的动态内容中,如评论区、搜索框等用户可输入的地方。
  • 用户状态要求:XSS 攻击不强制要求用户登录目标网站,只要用户访问了包含恶意脚本的页面即可。
  • 攻击特征:XSS 攻击可能更为直观,有时用户可以观察到页面异常,如弹出窗口、页面篡改等。
  • 防护措施:主要包括输入过滤和转义、使用 HTTP Only Cookie 防止 JavaScript 访问、实施内容安全策略(CSP)等。

总结来说,CSRF 侧重于利用用户的权限执行恶意操作,而 XSS 则侧重于通过注入脚本控制用户的浏览器环境。两者都需要网站开发者采取相应的安全措施来防范。

常见的 CSRF 手段:

  1. 构造恶意链接:攻击者可以在恶意网站上创建一个包含恶意请求的链接,并诱使受害者点击该链接。当受害者登录到目标网站时,浏览器会自动发送包含受害者身份验证信息的请求,从而执行恶意操作。

  2. 钓鱼邮件:攻击者可以通过钓鱼邮件或社交工程技术诱使用户点击包含 CSRF 攻击的链接。这些邮件可能会伪装成来自可信任机构或朋友的邮件,以增加受害者的信任度。

  3. 跨站脚本(XSS)利用:如果目标网站存在 XSS 漏洞,攻击者可以利用该漏洞注入恶意脚本,并将其触发以执行 CSRF 攻击。这种攻击通常会利用受害者的会话来执行恶意操作。

  4. 社交工程:攻击者可以利用社交工程技术欺骗用户在目标网站上执行特定的操作,例如点击一个看似无害的按钮或链接,而实际上这些操作会执行恶意请求。

  5. 利用第三方应用程序漏洞:如果目标网站与第三方应用程序集成,并且存在漏洞,则攻击者可以通过利用这些漏洞来执行 CSRF 攻击。


http://www.ppmy.cn/devtools/42562.html

相关文章

前端基础入门三大核心之HTML篇:深入理解重绘与重排 —— 概念、区别与实战演练

前端基础入门三大核心之HTML篇:深入理解重绘与重排 —— 概念、区别与实战演练 HTML渲染基础回顾重绘与重排的概念重绘(Repaint)重排(Reflow) 区别与影响实战示例:优化策略与代码演示示例1:避免…

Golang创建文件夹

方法 package zdpgo_fileimport ("os" )// AddDir 创建文件夹 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }测试 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

Scrapy 从创建到运行

Scrapy是一个强大的Python框架,专门用于构建网络爬虫。 步骤1:安装Scrapy 首先,你需要安装Scrapy框架来进行后续操作。以下是具体操作步骤: 1、使用pip命令安装Scrapy: pip install scrapy 步骤2:创建S…

【Python设计模式04】策略模式

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。策略模式让算法的变化不会影响使用算法的客户端,使得算法可以独立于客户端的变化而变化。…

Java数据结构与算法(最小栈)

前言 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…

每日新闻掌握【2024年5月20日 星期一】

2024年5月20日 星期一 农历四月十三 小满 TOP大新闻 住建部谈公积金贷款利率下调:100万贷款30年,总利息将减少4.85万元 日前,住房公积金个人住房贷款利率下调0.25个百分点。住房城乡建设部住房公积金监管司相关负责同志接受采访表示&#xf…

2024年电工杯赛题浅析一图流【一张图看懂 2024 年电工杯】

一图流【一张图看懂 2024 年电工杯】 Aspect A 题:园区微电网风光储协 调优化配置 B 题:大学生平衡膳食食谱 的优化设计及评价 数据处理 需要处理园区的负荷曲线、 风光发电数据、储能配置数 据;涉及数据量较大,需进 行数据…

一个超级简单的Python UI库:NiceGUI

大家好,图形用户界面(GUI)的开发往往被看作是一项复杂且繁琐的任务。Python作为一门强大的编程语言,提供了许多优秀的库来帮助开发者实现这一目标。今天,我们将介绍一个名为NiceGUI的库,它能帮助你轻松构建…