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

什么是 CSRF 攻击?

概念

CSRF 攻击指的是跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作。
CSRF 攻击的本质是利用 cookie 会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。

攻击类型

常见的 CSRF 攻击有三种:

  • GET 类型的 CSRF 攻击,比如在网站中的一个img 标签里构建一个请求,当用户打开这个网站的时候就会自动发起提交;
  • POST 类型的 CSRF 攻击,比如构建一个表单,然后隐藏它,当用户进入页面时,自动提交这个表单。
  • 链接类型的 CSRF 攻击,比如在 a 标签的href 属性里构建一个请求,然后诱导用户去点击。
如何防御 CSRF 攻击?

CSRF 攻击可以使用以下方法来防护:
进行同源检测,服务器根据 http 请求头中origin 或者referer信息来判断请求是否为允许访问的站点,从而对请求进行过滤。当origin 或者 referer 信息都不存在的时候,直接阻止请求。这种方式的缺点是有些情况下 referer 可以被伪造,同时还会把搜索引擎的链接也给屏蔽了。所以一般网站会允许搜索引擎的页面请求,但是相应的页面请求这种请求方式也可能被攻击者给利用。(Referer字段会告诉服务器该网页是从哪个页面链接过来的)

使用 CSRF Token 进行验证,服务器向用户返回一个随机数Token,当网站再次发起请求时,在请求参数中加入服务器端返回的token,然后服务器对这个 token 进行验证。这种方法解决了使用cookie单一验证方式时,可能会被冒用的问题,但是这种方法存在一个缺点就是,我们需要给网站中的所有请求都添加上这个token,操作比较繁琐。
还有一个问题是一般不会只有一台网站服务器,如果请求经过负载平衡转移到了其他的服务器,但是这个服务器的session中没有保留这个 token 的话,就没有办法验证了。这种情况可以通过改变 token 的构建方式来解决。

对 Cookie 进行双重验证,服务器在用户访问网站页面时,向请求域名注入一个 Cookie,内容为随机字符串,然后当用户再次向服务器发送请求的时候,从 cookie 中取出这个字符串,添加到URL参数中,然后服务器通过对 cookie 中的数据和参数中的数据进行比较,来进行验证。使用这种方式是利用了攻击者只能利用cookie,但是不能访问获取 cookie 的特点。并且这种方法比CSRF Token 的方法更加方便,并且不涉及到分布式访问的问题。这种方法的缺点是如果网站存在 XSS 漏洞的,那么这种方式会失效。同时这种方式不能做到子域名的隔离。

在设置 cookie 属性的时候设置 Samesite ,限制cookie 不能作为被第三方使用,从而可以避免被攻击者利用。Samesite 一共有两种模式,一种是严格模式,在严格模式下 cookie 在任何情况下都不可能作为第三方 Cookie 使用,在宽松模式下,cookie 可以被请求是GET 请求,且会发生页面跳转的请求所使用。

相关文章:

什么是 CSRF 攻击?

概念 CSRF 攻击指的是跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用…...

[内网渗透]CFS三层靶机渗透

文章目录 [内网渗透]CFS三层靶机渗透网络拓扑图靶机搭建Target10x01.nmap主机探活0x02.端口扫描0x03.ThinkPHP5 RCE漏洞拿shell0x04.上传msf后门(reverse_tcp)反向连接拿主机权限 内网渗透Target2(1)路由信息探测(2)msf代理配置&a…...

一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务以及配置子服务器

一、目的 kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后,准备在Linux上启动kettle的carte服务 二、实施步骤 (一)carte服务文件路径 kettle的Linux运行的carte服务文件是carte.sh (二…...

2023高教社杯数学建模A题 B题C题 D题 E题思路代码分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...

从ChatGLM2-6B来看大模型扩展上下文和加速推理相关技术

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性: 更强大的性能:基于 ChatGLM 初代模型的开发经验,全面…...

Unity特效总览

一、粒子 Unity中的粒子组件叫做Particle System。 粒子系统顾名思义,与“微粒”有关。粒子系统会生成和发射很多粒子,通过控制粒子的生成数量、大小、角度、速度、贴图和颜色等众多属性,可以实现或真实或炫酷的各种效果。其中,…...

Unity中人物控制器

在Unity中控制器是很常见的功能,一般的人物控制器有两种方法,一种是通过代码实现,另外一种就是通过Unity中的API实现。   这里主要介绍第一种方法。 首先对控制器步骤进行分析。 步骤1:通过方向键控制人物移动。 步骤2&#xff…...

零钱兑换-输出组合数

1.暴力递归 &#xff08;1&#xff09;剩余金额小于0&#xff0c;无解 剩余金额等于0&#xff0c;有解 剩余金额大于0&#xff0c;继续递归 &#xff08;2&#xff09;从大的硬币到小的硬币&#xff0c;可以减少循环次数 #include <bits/stdc.h> using namespace std;…...

Mybatis 小结

一、Mybatis 基本构成 MyBatis的整体分为基础支持层、核心处理层、接口。 1.1、基础支持层 1.1.1、数据源模块 MyBatis自身提供了相应的数据源实现&#xff0c;也提供了与第三方接口数据源集成的接口&#xff0c;这些功能都位于数据源模块之中。 1.1.2、事务管理模块 …...

【Cartopy】库的安装和瓦片加载(天地图、高德等)

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 Cartopy基础入门 【Cartopy】库的安装和天地图瓦片加载 【Cartopy】【Cartopy】如何更好的确定边界显示 【Cartopy】【Cartopy】如何丝滑的加载Geojso…...

TCPDF生成PDF文件,含jpjraph生成雷达图

TCPDF生成PDF文件&#xff0c;含jpjraph生成雷达图 依赖自行安装 "tecnickcom/tcpdf": "^6.6","amenadiel/jpgraph": "4"雷达图生成 中文字体添加安装 没有封装&#xff0c;只作为测试案例展示 // 创建新的PDF文档$pdf new \TCPD…...

Flink-串讲面试题

1. 概念 有状态的流式计算框架 可以处理源源不断的实时数据&#xff0c;数据以event为单位&#xff0c;就是一条数据。 2. 开发流程 先获取执行环境env&#xff0c;然后添加source数据源&#xff0c;转换成datastream&#xff0c;然后使用各种算子进行计算&#xff0c;使用s…...

如何培养对技术的热爱

这篇博文主要针对计算机专业相关的同学&#xff0c;对于理工科专业的同学有一定的借鉴意义&#xff0c;对于其他专业的同学&#xff0c;还请自行取舍。 背景 初学计算机&#xff0c;可能并不是每个人都能对其产生兴趣&#xff0c;更不要说从其中获得快乐。对于如何培养兴趣&a…...

Vue响应式数据的原理

在 vue2 的响应式中&#xff0c;存在着添加属性、删除属性、以及通过下标修改数组&#xff0c;但页面不会自动更新的问题。而这些问题在 vue3 中都得以解决。 vue3 采用了 proxy 代理&#xff0c;用于拦截对象中任意属性的变化&#xff0c;包括&#xff1a;属性的读写、属性的…...

pytest fixture 用于teardown工作

fixture通过scope参数控制setup级别&#xff0c;setup作为用例之前前的操作&#xff0c;用例执行完之后那肯定也有teardown操作。这里用到fixture的teardown操作并不是独立的函数&#xff0c;用yield关键字呼唤teardown操作。 举个例子&#xff1a; 输出&#xff1a; 说明&…...

39 printf 的输出到设备层的调试

前言 在前面 printf 的调试 我们只是调试到了 glibc 调用系统调用, 封装了参数 stdout, 带输出的字符缓冲, 以及待输出字符长度 然后内核这边 只是到了 write 的系统调用, 并未向下细看 我们这里 稍微向下 细追一下, 看看 到达设备层面 这里是怎么具体的 impl 的 测试用例…...

数字普惠金融、数字创新与经济增长—基于省级面板数据的实证考察(2011-2021年)

参照陈啸&#xff08;2023&#xff09;的做法&#xff0c;本对来自经济问题《数字普惠金融、数字创新与经济增长——基于省级面板数据的实证考察》一文中的基准回归部分进行复刻。数字普惠金融、数字创新已经成为驱动经济高质量发展的关键。利用省级面板数据&#xff0c;构建固…...

控制renderQueue解决NGUI与Unity3D物体渲染顺序问题

NGUI与Unity3D物体渲染顺序问题&#xff0c;做过UI的各位应该都遇到过。主要指的是UI与Unity制作的特效、3D人物等一同显示时的层次问题。 由于UI与特效等都是以transparent方式渲染&#xff0c;而Unity与NGUI在管理同是透明物体的render queue时实际上互相没有感知&#xff0…...

概率论与数理统计:第二、三章:一维~n维随机变量及其分布

文章目录 Ch2. 一维随机变量及其分布1.一维随机变量1.随机变量2.分布函数 F ( x ) F(x) F(x)(1)定义(2)分布函数的性质 (充要条件)(3)分布函数的应用——求概率3.最大最小值函数 2.一维离散型随机变量及其概率分布(分布律)3.一维连续型随机变量及其概率分布(概率密度)4.一般类型…...

BOLT- 识别和优化热门的基本块

在BOLT中&#xff0c;识别和优化热门的基本块之所以关键&#xff0c;是因为BOLT的主要目标是优化程序以更好地利用硬件特性&#xff0c;特别是指令缓存&#xff08;ICache&#xff09;。以下是BOLT如何识别和优化热门基本块的流程&#xff1a; 收集性能数据: BOLT开始的时候并不…...

3分钟掌握WindowResizer:彻底解决Windows窗口尺寸调整难题

3分钟掌握WindowResizer&#xff1a;彻底解决Windows窗口尺寸调整难题 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为Windows系统中那些顽固的、无法调整大小的应用程序窗口…...

【会议征稿通知 | 衢州学院主办 | IET出版 | EI 、Scopus稳定检索】第三届人工智能与电力系统国际学术会议(AIPS 2026)

第三届人工智能与电力系统国际学术会议&#xff08;AIPS 2026) 2026 3rd International Conference on Artificial Intelligence and Power System 2026年5月22-24日 | 中国-浙江-衢州 大会官网&#xff1a;www.icaips.org 截稿时间&#xff1a;见官网&#xff08;早投稿&am…...

终极指南:使用115proxy-for-kodi高效实现115云盘视频电视播放

终极指南&#xff1a;使用115proxy-for-kodi高效实现115云盘视频电视播放 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 想要在电视上直接流畅播放115云盘中的视频内容&#xff1f;115pr…...

超越官方控制面板:NVIDIA Profile Inspector如何解锁显卡隐藏潜力?

超越官方控制面板&#xff1a;NVIDIA Profile Inspector如何解锁显卡隐藏潜力&#xff1f; 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾对NVIDIA官方控制面板感到束手束脚&#xff1f;那些看…...

CSS3 按钮悬停时显示手型光标(cursor- pointer)的正确写法

CSS 中 cursor: pointer 需配合伪类 :hover 使用&#xff0c;直接在 button 元素上声明不会生效&#xff1b;正确做法是为 button:hover 单独设置该样式。 css 中 cursor: pointer 需配合伪类 :hover 使用&#xff0c;直接在 button 元素上声明不会生效&#xff1b;正确做…...

5大核心功能深度解析:NVIDIA Profile Inspector显卡驱动配置完全指南

5大核心功能深度解析&#xff1a;NVIDIA Profile Inspector显卡驱动配置完全指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款专业的显卡驱动配置工具&#xff0c;能…...

MVAA 2026 二尖瓣多模态解剖分析挑战赛全面启动!

MVAA 2026 二尖瓣多模态解剖分析挑战赛Mitral Valve Anatomy Analysis Using Multimodal Imaging Data在二尖瓣疾病的诊断、术前规划、术中导航与术后随访过程中&#xff0c;临床医生需要同时面对不同成像模态、不同空间尺度以及不同噪声特性的影像数据。单一模态上的优秀算法&…...

glslify与Webpack集成:现代前端工具链中的GLSL模块化

glslify与Webpack集成&#xff1a;现代前端工具链中的GLSL模块化 【免费下载链接】glslify A node.js-style module system for GLSL! :sparkles: 项目地址: https://gitcode.com/gh_mirrors/gl/glslify glslify是一款强大的GLSL模块化工具&#xff0c;它为WebGL开发者提…...

如何让全面战争MOD开发从繁琐变得优雅:RPFM的现代化解决方案

如何让全面战争MOD开发从繁琐变得优雅&#xff1a;RPFM的现代化解决方案 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https…...

Spring Boot 4.0 Agent-Ready 架构面试高频题全解,含ByteBuddy动态代理源码级剖析(附ASM vs ByteBuddy性能对比基准测试)

第一章&#xff1a;Spring Boot 4.0 Agent-Ready 架构面试概览Spring Boot 4.0 正式引入 Agent-Ready 架构设计范式&#xff0c;标志着其运行时可观测性、动态增强与非侵入式诊断能力进入全新阶段。该架构并非简单叠加 Java Agent 支持&#xff0c;而是将字节码增强、JVM 生命周…...