当前位置: 首页 > news >正文

跨站请求伪造之基本介绍

一.基本概念

1.定义

跨站请求伪造(Cross - Site Request Forgery,缩写为 CSRF)漏洞是一种网络安全漏洞。它是指攻击者通过诱导用户访问一个恶意网站,利用用户在被信任网站(如银行网站、社交网站等)的登录状态,在用户不知情的情况下,让用户的浏览器向被信任网站发送非用户本意的请求,从而执行一些操作,比如修改用户信息、进行转账等操作。

2.示例
  • 假设用户已经登录了一个网上银行网站bank.com​,其会话 ID 存储在浏览器的 Cookie 中。攻击者创建了一个恶意网站evil.com​,在这个网站上有如下 HTML 代码:

    <form action="https://bank.com/transfer" method="post"><input type="hidden" name="amount" value="1000" /><input type="hidden" name="recipient" value="attacker_account" />
    </form>
    <script>document.forms[0].submit();
    </script>
    
  • 当用户访问evil.com​时,浏览器会自动提交这个表单,向bank.com​发送一个转账请求。由于浏览器会带上用户在bank.com​的会话 Cookie,bank.com​会认为这个请求是用户自己发起的,从而可能导致用户的资金被盗转。

3.危害
  • 用户数据泄露和篡改:攻击者可以通过 CSRF 漏洞获取用户的敏感信息,如修改用户密码、邮箱地址等,从而进一步控制用户账户。
  • 经济损失:在涉及金融交易的网站上,攻击者可以利用 CSRF 漏洞进行非法转账、购物等操作,给用户造成直接的经济损失。
  • 破坏系统功能和信誉:可以对系统的正常功能造成干扰,如大量发送虚假请求,导致系统资源被滥用。同时,也会影响用户对网站的信任,损害网站的信誉。

二.漏洞类型

GET型CSRF
1.定义

GET 型 CSRF(Cross - Site Request Forgery)是 CSRF 攻击的一种类型。在这种攻击方式中,攻击者诱导用户的浏览器发起一个 HTTP GET 请求,利用用户在目标网站的登录状态,在用户不知情的情况下执行目标网站上的某些操作。

2.攻击流程
  1. 构造恶意链接:攻击者首先会构造一个包含恶意请求的链接。因为 HTTP GET 请求通常用于获取资源,在网页中,链接(<a>​标签)、图像(<img>​标签)、脚本(<script>​标签)等元素都可以发起 GET 请求。

  2. 利用自动请求机制:

    • 例如,使用<img>​标签来发起攻击。攻击者在恶意网站上放置一个<img>​标签,将其src​属性设置为目标网站带有恶意操作的 GET 请求链接。当用户访问这个恶意网站时,浏览器会自动尝试加载这个图像,从而发送这个 GET 请求。
    • 同样,对于<a>​标签,攻击者可以设置href​属性为恶意链接,然后通过一些手段(如欺骗用户点击看起来正常的链接)来让用户触发这个请求。不过这种方式相对比较容易被用户察觉,因为用户可能会看到链接的地址。
  3. 利用用户会话状态:就像其他类型的 CSRF 攻击一样,GET 型 CSRF 依赖于用户在目标网站的会话状态。当浏览器发送这个恶意的 GET 请求时,会自动带上用户在目标网站的会话 Cookie,目标网站收到请求后,由于有有效的会话标识,就可能会执行这个请求,以为是用户自己发起的操作。

3.示例
  • 假设一个社交网站有一个点赞功能,其点赞的接口是https://social.com/like?post_id=123​,正常情况下,用户点击社交网站上的点赞按钮会发送这个 GET 请求来为 ID 为 123 的帖子点赞。

  • 攻击者在恶意网站上放置了这样的代码:

    <img src="https://social.com/like?post_id=123" alt="malicious_image" />
    
  • 当用户访问这个恶意网站时,浏览器会自动加载这个 “图像”,实际上就发送了一个点赞的 GET 请求。由于用户在社交网站的会话 Cookie 会被一起发送,社交网站就可能会为帖子 ID 为 123 的内容点赞,而用户对此可能完全不知情。

POST型CSRF
1.定义

POST 型 CSRF(Cross - Site Request Forgery)是一种跨站请求伪造攻击类型,它利用 HTTP POST 请求来实施攻击。攻击者通过诱导用户在已登录目标网站的状态下,在用户浏览器不知情的情况下发送包含恶意意图的 POST 请求,从而导致目标网站执行非用户本意的操作。

2.攻击流程
  1. 构造恶意表单:攻击者在恶意网站上构造一个包含目标网站恶意操作的表单。表单的action​属性指向目标网站中执行关键操作的 URL,例如银行转账的提交 URL、用户信息修改的提交页面等。表单的各个字段则填写攻击者想要执行的操作参数,如转账金额、修改后的用户信息等。

  2. 自动提交表单或诱使用户提交:

    • 攻击者可以使用 JavaScript 代码来自动提交表单。例如,在恶意 HTML 页面中有如下代码:

      <form id="attackForm" action="https://target.com/transfer" method="post"><input type="hidden" name="amount" value="1000" /><input type="hidden" name="recipient" value="attacker_account" />
      </form>
      <script>document.getElementById('attackForm').submit();
      </script>
      
    • 当用户访问这个恶意网站时,浏览器会自动提交这个表单,向目标网站发送一个 POST 请求。或者,攻击者也可以通过一些手段诱使用户手动提交表单,例如将提交按钮伪装成一个吸引人的链接或按钮,让用户在不知情的情况下点击。

  3. 利用用户会话状态:和 GET 型 CSRF 一样,POST 型 CSRF 也依赖于用户在目标网站的会话状态。当浏览器发送这个 POST 请求时,会自动带上用户在目标网站的会话 Cookie,目标网站收到请求后,由于收到了带有有效用户会话标识(Cookie)的请求,就会执行这个请求,以为是用户自己发起的操作。

三.防御措施

  • 使用 CSRF 令牌(Token):

    • 网站在生成表单或关键请求时,同时生成一个唯一的 CSRF 令牌并将其包含在表单中或者作为请求头的一部分。当服务器收到请求时,会验证这个令牌是否有效。因为攻击者无法轻易获取这个令牌,所以无法伪造有效的请求。
  • 验证请求来源(Referer 检查):

    • 服务器可以检查请求的来源(即Referer​头信息),如果请求来自一个不可信的源,就拒绝这个请求。不过这种方法有一定的局限性,因为Referer​头信息可以被浏览器插件或者用户自己修改。
  • Same - Site Cookie 属性设置:

    • 可以将 Cookie 的Same - Site​属性设置为Strict​或者Lax​。Strict​模式下,浏览器只有在用户从同一站点访问时才会发送 Cookie;Lax​模式稍微宽松一些,在一些安全的跨站导航场景下也允许发送 Cookie。这样可以限制 Cookie 在跨站请求中的滥用,从而减轻 CSRF 攻击的风险。

相关文章:

跨站请求伪造之基本介绍

一.基本概念 1.定义 跨站请求伪造&#xff08;Cross - Site Request Forgery&#xff0c;缩写为 CSRF&#xff09;漏洞是一种网络安全漏洞。它是指攻击者通过诱导用户访问一个恶意网站&#xff0c;利用用户在被信任网站&#xff08;如银行网站、社交网站等&#xff09;的登录状…...

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器&#xff0c;获取海量数据的处理能力&#xff0c;实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…...

单元测试(UT,C++版)经验总结(gtest+gmock)

最近做了一段测试工作&#xff0c;其中包括单元测试&#xff0c;编程语言是C。这里提供一些基本知识总结&#xff0c;方便入门单元测试。 1.单元测试介绍 单元测试&#xff08;Unit Testing, 简称UT&#xff09;是软件测试的一种方法&#xff0c;目的是通过对单个软件组件&am…...

Mysql高级部分总结(二)

MySQL的内部日志 binlog记载的是update/delete/insert这样的SQL语句,而redo log记载的是物理修改的内容(xxxx页修改了xxx)。 binlog无论MySQL用什么引擎,都会有,而redo log是MySQL的InnoDB引擎所产生的。 redo log事务开始的时候,就开始记录每次的变更信息,而binlog是在…...

纠正一下网络管理

先找到那个hrStorageType 这里我的值是 后面的值.1.3.6.1.2.1.25.2.1.4代表磁盘 我只有2个盘 C盘和D盘 所以这里只有2个 你们有E盘F盘的话 这里会多 .1.3.6.1.2.1.25.2.1.2 代表内存 .1.3.6.1.2.1.25.2.1.2 前面是 hrStorageType.4 所以 这里面.4后缀是表示内存的 之前…...

homebrew,gem,cocoapod 换源,以及安装依赖

安装homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 再按照成功提示配置环境变量 ruby 更新ruby到最新 brew install ruby 如果安装了会自动升级 安装完成后根据提示配置环境变量 再执行命令使其生效 s…...

Java字符串的|分隔符转List实现方案

字符串处理 问题背景代码实现代码优化原因分析实现方案 注意事项异常处理Maven未识别异常 问题背景 在项目组对账流程中&#xff0c;接收对方系统的对账文件&#xff0c;数据以|为分隔符&#xff0c;读取文件内容&#xff0c;分条入库。 代码实现 Java中将字符串转给list&am…...

Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)

数据的存储是基于 主题&#xff08;Topic&#xff09; 和 分区&#xff08;Partition&#xff09; 的 Kafka是一个高可靠性的分布式消息系统&#xff0c;广泛应用于大规模数据处理和实时, 为了更方便地管理和监控Kafka集群&#xff0c;开发人员和运维人员经常需要使用可视化工具…...

DeepWalk 原理详解

概述&#xff1a; DeepWalk 是一种流行的图嵌入方法&#xff0c;用于学习图结构数据中节点的低维表示。它通过将图的节点视作序列数据&#xff0c;利用自然语言处理中的技术&#xff08;类似于word2vec算法&#xff09;来捕捉节点间的关系&#xff0c;可以帮助我们理解和利用图…...

GitLab安装|备份数据|迁移数据及使用教程

作者&#xff1a; 宋发元 最后更新时间&#xff1a;2024-12-24 GitLab安装及使用教程 官方教程 https://docs.gitlab.com/ee/install/docker.html Docker安装GitLab 宿主机创建容器持久化目录卷 mkdir -p /docker/gitlab/{config,data,logs}拉取GitLab镜像 docker pull gi…...

嵌入式linux驱动框架 I2C系统驱动程序模型分析

引言&#xff1a;在嵌入式 Linux 系统中&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;是一种常用的通信协议&#xff0c;用于连接低速设备&#xff08;如传感器、显示器、存储器等&#xff09;与主控制器。I2C 系统驱动程序模型通过层次化的设计&#xff0…...

深度学习实验十七 优化算法比较

目录 一、优化算法的实验设定 1.1 2D可视化实验&#xff08;被优化函数为&#xff09; 1.2 简单拟合实验 二、学习率调整 2.1 AdaGrad算法 2.2 RMSprop算法 三、梯度修正估计 3.1 动量法 3.2 Adam算法 四、被优化函数变为的2D可视化 五、不同优化器的3D可视化对比 …...

一个双非选手的秋招总结

个人bg介绍 25届双非本硕&#xff08;非杭电深大&#xff0c;垫底双非&#xff09;&#xff0c;两段实习经历&#xff0c;本科没学过Java&#xff0c;有c语言和408基础&#xff1b;2023年10月份中途转语言&#xff0c;Java速成选手。 战绩总结&#xff1a;实习秋招面试总论次…...

如何提高永磁电动机的节电效果

在现代工业和家庭应用中&#xff0c;永磁电动机因其优越的性能和节能特性&#xff0c;逐渐成为主流选择。随着能源日益紧缺和环境问题的日益严重&#xff0c;寻求高效的电动机节能方案显得尤为重要。 一、永磁电动机的基本原理 永磁电动机的核心是永磁体&#xff0c;这些永磁…...

在一个服务器上抓取 Docker 镜像并在另一个服务器上运行

要在一个服务器上抓取 Docker 镜像并在另一个服务器上运行&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1. 保存 Docker 镜像 在源服务器上&#xff0c;您可以使用 docker save 命令将 Docker 镜像保存为一个 tar 文件。例如&#xff0c;如果您的镜像名称是 face_det…...

开源轮子 - Logback 和 Slf4j

spring boot内置&#xff1a;Logback 文章目录 spring boot内置&#xff1a;Logback一&#xff1a;Logback强在哪&#xff1f;二&#xff1a;简单使用三&#xff1a;把 log4j 转成 logback四&#xff1a;日志门面SLF4J1&#xff1a;什么是SLF4J2&#xff1a;SLF4J 解决了什么痛…...

内部知识库的未来展望:技术融合与用户体验的双重升级

在当今数字化飞速发展的时代&#xff0c;企业内部知识库作为知识管理的关键载体&#xff0c;正站在变革的十字路口&#xff0c;即将迎来技术融合与用户体验双重升级的崭新时代&#xff0c;这一系列变化将深度重塑企业知识管理的格局。 一、技术融合&#xff1a;开启知识管理新…...

【Linux系列】Shell 命令:`echo ““ > img.sh`及其应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术&#xff0c;通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地&#xff0c;语言模型可根据上下文中已出现的词序列&#xff0c;使用概率推断来预测接…...

【MySQL】7.0 入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

1.0 help &#xff1f; 帮助指令&#xff0c;查询某个指令的解释、用法、说明等。详情参考博文&#xff1a; 【数据库】6.0 MySQL入门学习&#xff08;六&#xff09;——MySQL启动与停止、官方手册、文档查询 https://www.cnblogs.com/xiaofu007/p/10301005.html 2.0 在cmd命…...

vllm部署DeepSeek-R1-Distill-Qwen-1.5B:高并发推理性能评测教程

vllm部署DeepSeek-R1-Distill-Qwen-1.5B&#xff1a;高并发推理性能评测教程 1. 模型介绍与部署价值 DeepSeek-R1-Distill-Qwen-1.5B是DeepSeek团队基于Qwen2.5-Math-1.5B基础模型&#xff0c;通过知识蒸馏技术打造的轻量化版本。这个模型在保持强大能力的同时&#xff0c;专…...

C#开发者紧急通告:Blazor 2026正式版插件兼容性断崖预警(附72小时热修复方案)

第一章&#xff1a;C#开发者紧急通告&#xff1a;Blazor 2026正式版插件兼容性断崖预警&#xff08;附72小时热修复方案&#xff09; Blazor 2026正式版已于2026年4月1日全球发布&#xff0c;但微软官方同步披露&#xff1a;所有基于.NET 7及更早运行时构建的第三方组件库&…...

开源工具Free-NTFS-for-Mac:跨平台NTFS设备高效管理指南

开源工具Free-NTFS-for-Mac&#xff1a;跨平台NTFS设备高效管理指南 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management …...

无障碍辅助工具链:OpenClaw+Kimi-VL-A3B-Thinking实现图片语音描述服务

无障碍辅助工具链&#xff1a;OpenClawKimi-VL-A3B-Thinking实现图片语音描述服务 1. 项目背景与动机 去年在一次志愿者活动中&#xff0c;我遇到一位视障开发者正在尝试用编程解决日常信息获取问题。看着他费力地通过屏幕阅读器逐字听取代码时&#xff0c;我突然意识到&…...

JS中彻底删除JSON对象组成的数组中的元素

在 JS 中&#xff0c;对于某个由 JSON 对象组成的数组&#xff0c;例如&#xff1a;var test [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b…...

Cesium实战:手把手教你用四元数搞定飞行模型朝向,告别极点旋转Bug

Cesium实战&#xff1a;四元数驱动飞行模型朝向的终极解决方案 想象一下&#xff0c;你正在开发一个全球飞行模拟系统&#xff0c;当飞机接近北极点时&#xff0c;模型突然像失控的陀螺一样疯狂旋转——这不是特效&#xff0c;而是许多Cesium开发者遇到的经典痛点。传统欧拉角在…...

Phi-4-mini-reasoning保姆级教程:从零配置Ubuntu服务器到Gradio界面可用

Phi-4-mini-reasoning保姆级教程&#xff1a;从零配置Ubuntu服务器到Gradio界面可用 1. 准备工作 在开始之前&#xff0c;我们需要准备好以下内容&#xff1a; 一台运行Ubuntu 22.04 LTS的服务器&#xff08;建议至少16GB内存&#xff09;NVIDIA显卡&#xff08;建议RTX 409…...

OpenClaw安全防护指南:Kimi-VL-A3B-Thinking本地化部署最佳实践

OpenClaw安全防护指南&#xff1a;Kimi-VL-A3B-Thinking本地化部署最佳实践 1. 为什么需要特别关注OpenClaw的安全配置&#xff1f; 去年夏天&#xff0c;我在整理公司财报时突发奇想&#xff1a;能不能让AI助手帮我自动生成分析图表&#xff1f;当我看着OpenClaw的鼠标指针在…...

8250串行通信避坑指南:如何用内环测试快速定位硬件故障(附Proteus仿真文件)

8250串行通信避坑指南&#xff1a;如何用内环测试快速定位硬件故障 在嵌入式系统开发中&#xff0c;串行通信故障排查往往是最令人头疼的问题之一。当你面对一个无法正常通信的系统时&#xff0c;问题可能出在硬件连接、芯片配置、软件逻辑或者中断处理等任何一个环节。而8250这…...

毕设-情绪雷达

情绪雷达 注&#xff1a; 项目基于芋道的 mini 版&#xff0c;进行二次开发&#xff0c;部署文档就不过多赘述了&#xff0c;可以看人家的官方文档。 概述&#xff1a; 情绪雷达&#xff0c;项目的核心开发路线是&#xff1a;针对用户发来的聊天界面截图&#xff0c;利用 a…...