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

跨站请求伪造(CSRF)漏洞详解

免责申明

        本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 如您继续阅读该文章即表明您默认遵守该内容。

一、CSRF介绍

1.1、CSRF简介

        跨站请求伪造(Cross-site request forgery 简称:CSRF);是一种冒充受信任用户,向服务器发送非预期请求的攻击方式(它允许攻击者诱使用户执行他们不打算执行的操作;允许攻击者部分绕过同源策略,该策略旨在防止不同网站相互干扰)【CSRF主要利用的是网站对用户网页浏览器的信任】【XSS 利用的是用户对指定网站的信任】。

        跨站请求伪造的攻击特性是危害性大但非常隐蔽,攻击者完全可以在用户毫无察觉的情况下发起CSRF攻击。

1.2、CSRF原理流程

        跨站请求伪造也称为点击攻击(即:需要人为的点击触发)或者需要靠其他漏洞触发,其本身是不具备主动攻击性的CSRF漏洞主要是由于开发人员进行功能开发的时候,没有对请求的参数内容(如:token和referer等)进行严格的判断,这样就会方便攻击者可构造自己的URL地址欺骗目标用户进行点击。

        跨站请求伪造攻击流程是(攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也称为"one click"攻击(点击攻击),需要用户触发攻击动作(即:当我们打开网站并且登陆某个网站后,就会产生一个会话(这里指用户登陆后),这个会话可能是session,Cookie控制,此时浏览器与服务器之间是处于会话之中,在这个会话没有结束时候,你可以利用你的权限对该登录的网站进行操作(如:发表评论、发送邮件、或删除信息等操作);当这个会话结束后,你在进行;如下图所示:

跨站请求伪造CSRF攻击的详细流程
1、用户打开浏览器,访问受信任网站A,并且输入自己的用户名和密码登录到网站A上;
2、网站A在接收用户信息进行验证通过后,就会生成对应的Cookie或Session信息并返回给用户浏览器,此时用户登录网站A成功,就可以正常发送请求到网站A,而不用再次进行认证了;
3、 用户未退出网站A的登录之前,此时又在同一个浏览器中,打开另一个TAB页访问恶意网站B或网站B中的恶意内容;
4、网站B接收到用户请求后,返回一些攻击性代码(这些攻击代码是用于发出一个请求要求访问网站A的);
5、浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A
发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户的Cookie信息以及该用户的权限处理该请求,导致来自网站B的恶意代码被在网站A执行。
跨站请求伪造CSRF的特点
序号CSRF显著特点
1CSRF的攻击建立在浏览器与Web服务器的会话之中
2欺骗用户访问URL

1.3、CSRF分类

相关文章:

跨站请求伪造(CSRF)漏洞详解

免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法…...

Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示

数字化给各行各业所带来的改变,在早些年间突出自动这一流程。但随着科技的发展,让人们也愈发了解可视化操作所带来的优势。智慧工地的诞生,相当于为建筑施工带来了一套较为完整的数字化流程,能够完善施工环节中的各部分内容。接下…...

【推广】图书|2024新书《大模型RAG实战:RAG原理、应用与系统构建》汪鹏、谷清水、卞龙鹏等,机械工业出版社

探索RAG系统新高度:《大模型RAG实战:RAG原理、应用与系统构建》 随着大模型技术的爆发,尤其是ChatGPT之后,以ChatPDF为首的知识库问答产品迅速走红,引发了RAG(检索增强生成)系统的广泛关注与讨论…...

在Unity UI中实现UILineRenderer组件绘制线条

背景介绍 在Unity的UI系统中,绘制线条并不像在3D世界中那样直观(使用Unity自带的LineRender组件在UI中连线并不方便,它在三维中更合适)。没有内置的工具来处理这种需求。如果你希望在UI元素之间绘制连接线(例如在UI上连接不同的图标或控件)&a…...

C语言中union的用法

在C语言中,union(联合体)是一种特殊的复合数据类型,它允许多个不同的数据成员共享同一块内存空间。与struct(结构体)不同的是,union中的所有成员共用同一个内存地址,因此同时只能存储…...

C++速通LeetCode中等第18题-删除链表的倒数第N个结点(最简单含注释)

绝妙!快慢指针法,快指针先走n步(复杂度O(n),O(1)): /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…...

鸿蒙 WebView 设置 Header

import { webview } from kit.ArkWebimport { WebHeader } from kit.ArkUI 一共两种方式: 1.把 loadurl的方法写在web组件的生命周期里面 Web({ src:"", controller: this.controller }) .onControllerAttached(()>{ this.controller.loadUrl("…...

电力施工作业安全行为检测图像数据集

电力施工作业安全行为检测图像数据集,图片总共 2300左右,标注为voc(xml)格式,包含高空抛物,未佩戴安全带,高处作业无人监护等。 电力施工作业安全行为检测图像数据集 数据集描述 这是一个专门用于电力施工作业安全行…...

大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)

实验二: Hadoop安装和使用 一、实验目的 实现hadoop的环境搭建和安装Hadoop的简单使用; 二、实验平台 操作系统:Linux(建议Ubuntu16.04或者18.04);Hadoop版本:3.1.3;JDK版本&…...

【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…...

Qt圆角窗口

Qt圆角窗口 问题:自己重写了一个窗口,发现用qss设置圆角了,但是都不生效,不过子窗口圆角都生效了。 无边框移动窗口 bool eventFilter(QObject *watched, QEvent *evt) {static QPoint mousePoint;static bool mousePressed f…...

研究生第一次刷力扣day1

1.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标 直接采用暴力求解,其他解答案看不懂 大致思想:先用len函数求出数组的长度n,然后一个个遍…...

flink自定义process,使用状态求历史总和(scala)

es idea maven 依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-elasticsearch7_2.11</artifactId> <version>1.11.1</version> </dependency> import org.apache.flink.api.common.eve…...

股指期货理论价格计算公式是什么?

股指期货&#xff0c;作为金融衍生品的一种&#xff0c;其价格与现货市场的股指价格紧密相关&#xff0c;但又受到多种因素的影响。了解股指期货理论价格的计算公式&#xff0c;对于投资者进行套利交易、风险管理等具有重要意义。本文将详细解读股指期货理论价格的计算公式&…...

解决R包依赖版本不兼容问题

ERROR: dependency ‘Matrix’ is not available for package ‘irlba’ removing ‘/root/anaconda3/envs/myview/lib/R/library/irlba’ ERROR: dependency ‘Matrix’ is not available for package ‘N2R’ removing ‘/root/anaconda3/envs/myview/lib/R/library/N2R’ ER…...

HarmonyOS开发者基础认证考试试题

文章目录 一、判断题二、单选题三、多选题 因考试只有91分&#xff0c;所以下方答案有部分错误&#xff0c;如果有发现错误&#xff0c;欢迎提出 一、判断题 1. HarmonyOS提供了基础的应用加固安全能力&#xff0c;包括混淆、加密和代码签名能力 正确 2. 用户首选项是关系型数…...

如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件

创建一个 Chrome 插件是一个有趣的项目&#xff0c;特别是当结合使用强大的工具如 React、TypeScript、TailwindCSS 和 Vite 时 在这篇文章中&#xff0c;我们将逐步引导完成整个过程&#xff0c;了解如何在 2024 年构建自己的 Chrome 插件。无论是经验丰富的开发者还是刚刚起…...

机器学习——Stacking

Stacking&#xff1a; 方法&#xff1a;训练多个模型(可以是强模型)&#xff0c;然后将这些模型的预测结果作为新的特征&#xff0c;输入到下一层新的模型&#xff08;可以是多个&#xff09;中进行训练&#xff0c;从而得到最终的预测结果。 代表&#xff1a;Stacking本身并没…...

在HTML中添加图片

在HTML中添加图片&#xff0c;你需要使用<img>标签。这个标签用于在网页上嵌入图像。<img>是一个空元素&#xff0c;它只包含属性&#xff0c;并且没有闭合标签。要在<img>标签中指定要显示的图像&#xff0c;你需要使用src&#xff08;source的缩写&#xf…...

R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)

文章目录 介绍原理应用方向下载数据加载R包导入数据数据预处理数据描述数据切割标准化数据设置参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 支持向量机(Support Vector Machine,简称SVM)是一种…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...