【网络安全】CSRF漏洞—CSRF基础漏洞防御

news/2024/9/17 7:59:49/ 标签: web安全, csrf, 安全

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络安全攻击手段,它利用用户已经认证的身份,通过第三方网站诱导用户点击链接或提交表单,从而在用户不知情的情况下,以用户的名义执行一些操作,比如转账、发帖、改密码等。

一、CSRF漏洞介绍
 1.1 定义

理解:

  • 跨站点的请求
  • 请求是伪造的(假装可信)

Cross-Site Request Forgery,跨站请求伪造。它是一种挟持用户在当前已登陆的Web应用程序执行非本意的操作的攻击方法。

1.2 成因

CSRF漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登陆的状态。而在这个期间,攻击者发送了构造好的CSRF脚本或包含CSRF脚本的连接,可能会执行一些用户不想做的功能(比如添加账号等)。这个操作不是用户真正想要执行的

1.3 攻击过程
  1. 用户登陆受信任的网站A,并在本地生成Cookie
  2. 在不登出A的情况下,访问危险网站B
  3. 执行危险网站B上面的代码
1.4 CSRF攻击分类
  • 正常的CSRF攻击,增删改等操作(基于操作的CSRF)
  • 另类的CSRF:JSONP、CORS、Flash跨域劫持(基于文件读取的CSRF)
1.5 攻击利用

CSRF的本质就是在不知情的情况下执行请求

根据请求分为了:get类型CSRF,post类型CSRF

1.5.1 GET型CSRF

攻击者可能会构造一个GET请求的URL,该URL指向一个恶意的操作,如转账或修改设置。用户在不知情的情况下点击这个链接,如果用户已经登录,服务器可能会执行该操作,因为GET请求通常不包含敏感数据。一般会这样利用:

<img src="http://bank/exaple/withdraw?amount=10000&for=hacker">
1.5.2 POST型CSRF

攻击者可能会诱导用户点击一个链接或提交一个表单,这个链接或表单使用POST方法。如果用户已经登录,服务器可能会处理这个请求,执行如修改密码或转账等敏感操作。

<form action="http://bank.example/withdraw"method=POST>
<input type="hidden" name="account" value="xiaoming"/> //name为参数,value为参数的值
<input type="hidden" name="amount"value="10000"/>
<input type="hidden" name="for" value="hacker"/>
</form>
<script>document.forms[0].submit();</script> //自动提交表单
二、CSRF漏洞利用
2.1 同源策略介绍

同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以 xyz.com下的js脚本采用ajax读取abc.com里面的文件数据会被拒绝

同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

2.2 解决跨域问题

由于同源策略的影响,当我们从一个域名的网页去请求另一个域名的资源时,就无法成功获取资源。如果我们想要成功获取资源,那么就要用到跨域

跨域解决方案:jsonp、cors、postMessage

2.3 CORS介绍

CORS(Cross-Origin Resource Sharing,跨源资源共享)是一种安全机制,它允许或限制网页从另一个域名(即跨域)加载资源。这是由浏览器实施的安全策略,称为同源策略,它防止一个域的脚本与另一个域的资源交互,除非后者明确允许。

在配置了cors的前提下,当你登录网站A,并跨域访问网站B的时候,浏览器判断你的操作是跨域,这时候会在数据包里面加个origin字段,内容为:origin:b.com,这样你就能跨域了,当cors的配置错误时就会产生cors漏洞

2.4 jsonp

JSONP(JSON with Padding)是一种在Web开发中用来绕过浏览器同源策略限制,实现跨域请求的技术。由于同源策略的限制,一个网页上的JavaScript代码通常不能直接请求另一个域的资源。JSONP通过动态创建<script>标签的方式,允许网页从不同域获取数据。

JSONP在客户端网页中的JavaScript代码动态创建一个<script>标签,并将其src属性设置为要请求的URL,该URL包含了一个查询参数,通常是callback,后跟一个函数名。服务器接收到请求后,将数据包装在客户端指定的函数调用中,然后返回给客户端。例如,如果客户端请求的URL是http://example.com/data?callback=myCallback,服务器会返回myCallback({"key":"value"})。回到客户端,浏览器解析返回的脚本,执行其中的函数调用,从而获取到数据。

2.5 postMessage

postMessage 是一个JavaScript API,它允许来自不同源的页面间安全地进行通信。这个API是Web Messaging的一部分,它提供了一种在不同窗口、iframe或标签页之间传递消息的方法,而不受同源策略的限制。

postMessage 方法可以发送一个消息到另一个页面,这个消息可以是一个字符串或者一个JavaScript对象。接收消息的页面可以监听 message 事件来接收消息。


http://www.ppmy.cn/news/1521977.html

相关文章

redis分布式锁和lua脚本

业务场景&#xff1a;多个线程对共同资源的访问&#xff1a;库存超卖/用户重复下单的原因 解决方法一&#xff1a;利用jvm内置锁&#xff0c;将非原子性操作变成原子性操作 Synchronized锁的是对象&#xff0c;对象必须是单例的。锁的是this,代表当前所在的类&#xff0c;这个…

06_React ajax

React ajax 一、理解1、前置说明2、常用的 ajax 请求库浏览器插件推荐 二、axios1、跨域实际上是请求发出了&#xff0c;但是没有接收到数据。使用代理服务器进行解决2、React 脚手架配置代理2.1 前端项目在 package.json 中的文件添加配置&#xff0c;可以解决跨域2.2 方式二2…

工厂模式与策略模式(golang示例)

一、工厂模式简介 工厂模式是一种创建型设计模式&#xff0c;主要用于封装对象的创建过程。通过使用工厂模式&#xff0c;客户端代码无需直接实例化对象&#xff0c;而是通过工厂类来创建对象。这样可以将对象的创建与使用分离&#xff0c;从而提高代码的灵活性。 1.1 工厂模…

004: VTK读入数据---vtkImageData详细说明

VTK医学图像处理---vtkImageData类 目录 VTK医学图像处理---vtkImageData类 简介&#xff1a; 1 Mricro软件的安装和使用 (1) Mricro安装 (2) Mricro转换DICOM为裸数据 2 从硬盘读取数据到vtkImageData 3 vtkImageData转RGB或RGBA格式 4 练习 总结 简介&#xff1a;…

Dify 与 FastGPT 流程编排能力对比分析

Dify 与 FastGPT 流程编排能力对比分析 一、引言 在人工智能快速发展的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;应用平台正在重塑各行各业的工作流程。其中&#xff0c;Dify 和 FastGPT 作为两款具有重要影响力的工具&#xff0c;凭借各自独特的流程编排能力&a…

SimD:基于相似度距离的小目标检测标签分配

摘要 https://arxiv.org/pdf/2407.02394 由于物体尺寸有限且信息不足&#xff0c;小物体检测正成为计算机视觉领域最具挑战性的任务之一。标签分配策略是影响物体检测精度的关键因素。尽管已经存在一些针对小物体的有效标签分配策略&#xff0c;但大多数策略都集中在降低对边界…

Faker在pytest中的应用

Faker在pytest中的应用主要体现在测试数据的准备上&#xff0c;通过生成逼真的伪数据来模拟真实场景&#xff0c;从而提高测试的覆盖率和可靠性。以下是一些具体的应用例子&#xff1a; 用户信息测试 在测试用户注册、登录等功能时&#xff0c;Faker可以生成大量的用户信息&a…

逻辑代数的基本定律,常用公式

目录 逻辑代数的基本定律 0-1律 同一律 互补律 还原律 交换律 结合律 分配律 摩根定理&#xff08;反演律&#xff09; 逻辑代数的常用公式 吸收律 冗余律 思考 异或运算的一些公式 逻辑代数的基本定律 最基本的与或非的运算。 0-1律 同一律 互补律 还原律 交…

统一NLP和目标检测的DETR(一)——self attention、encoder、decoder

主流目标检测算法劣势 YOLO系列&#xff0c;它基于anchor来做&#xff0c;少不了要用MNS&#xff0c;导致速度相对较慢。 但今天介绍一款DETR&#xff0c;基于VIT的目标检测算法。 那么我们需要先深入过一遍VIT。 Vision transform 1、传统RNN网络的问题 单向&#xff1a;只…

Java8 Stream流的基本使用

Java 8 中引入的 Stream API 是为了简化对集合类库&#xff08;例如 List 和 Set&#xff09;的操作&#xff0c;同时支持声明式编程风格和并行操作。Stream 不存储数据&#xff0c;而是对数据源进行流水线式操作&#xff0c;其设计核心是“将数据处理的每一步链接起来&#xf…

kubernetes集群下部署kafka+zookeeper单机部署方案

背景&#xff1a; 注&#xff1a;在kubernetes集群上部署单机版的zookeeperkafka服务&#xff0c;是采用了kubernetes中的deploment组件service组件pvc存储组件 1、部署zookeeper服务&#xff1a; 注&#xff1a;这里时候的镜像是&#xff1a;dockerhub.jiang.com/jiang-public…

【佳学基因检测】如何使用Letsencrypt对一个网站进行加密?

【佳学基因检测】如何使用Letsencrypt对一个网站进行加密&#xff1f; 更换为Let’s Encrypt证书涉及以下几个步骤&#xff1a; 1. 安装Certbot Certbot是Let’s Encrypt的客户端工具&#xff0c;它可以帮助你申请和管理证书。首先&#xff0c;你需要在服务器上安装Certbot。…

[C++11#45](二) 右值引用 | 移动语义 | 万能引用 | 完美转发forward | 初识lambda

目录 一. 右值引用 1.左值 vs 右值 2.左值引用 vs 右值引用 右值引用实现的两种底层优化 Q1&#xff1a; 容器上 Q2&#xff1a; 字符串上 解决&#xff1a;右值引用 3.完美转发 完美转发 4.补充 1.移动赋值 2.右值引用引用左值的场景 二.lambda 1.引入 2.lambd…

无人机之载重篇

无人机的载重能力是一个复杂且多样化的参数&#xff0c;它受到多种因素的影响&#xff0c;包括无人机的类型、设计、技术规格以及用途等。以下是对无人机载重能力的详细解析&#xff1a; 一、无人机载重能力的差异 无人机的载重能力差异很大&#xff0c;从几百克到几十千克不等…

Java后端分布式系统的服务容错机制:Faul-tolerant Systems

Java后端分布式系统的服务容错机制&#xff1a;Faul-tolerant Systems 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在构建分布式系统时&#xff0c;服务的容错性是确保系统稳定性和可用性的…

安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景

随着科技的不断进步&#xff0c;增强现实&#xff08;AR&#xff09;技术逐渐在多个领域展现出其独特的优势&#xff0c;尤其是在安保和安防方面。AR眼镜凭借其先进的功能&#xff0c;在机场、车站、海关、港口、工厂、园区、消防局和警察局等行业中为安保人员提供了更为高效、…

TCP 和 UDP 区别

UDP UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种无连接的网络传输协议&#xff0c;提供了简单的消息传送服务。UDP位于传输层&#xff0c;允许应用程序向其他主机发送封装在IP数据报中的消息&#xff0c;而无需先建立连接。由于UDP不…

【论文笔记】Multi-Task Learning as a Bargaining Game

Abstract 本文将多任务学习中的梯度组合步骤视为一种讨价还价式博弈(bargaining game)&#xff0c;通过游戏&#xff0c;各个任务协商出共识梯度更新方向。 在一定条件下&#xff0c;这种问题具有唯一解(Nash Bargaining Solution)&#xff0c;可以作为多任务学习中的一种原则…

I2VGen-XL模型构建指南

一、介绍 VGen可以根据输入的文本、图像、指定的运动、指定的主体&#xff0c;甚至人类提供的反馈信号生成高质量的视频。它还提供了各类常用的视频生成模型工具&#xff0c;例如可视化、采样、训练、推理、使用图像和视频的联合训练&#xff0c;加速等各类工具和技术。 &quo…

微信小程序显示后台文章副文本,图片和视频正常显示

解决方案: 使用 wxParse 或 rich-text 组件: 这两种方式可以解析 HTML 字符串并渲染富文本内容&#xff0c;包括图片和视频。 数据处理: 将后台返回的富文本数据进行处理&#xff0c;提取出图片和视频的链接&#xff0c;并将其转换成小程序支持的格式。 方案一&#xff1a;使…