Web漏洞之CSRF和SSRF

Web漏洞之CSRF和SSRF

CSRF

CSRF(Cross Site Request Forgery,跨站请求伪造)是一种通过利用用户身份认证信息,诱导用户执行非预期请求的攻击方式。

一、基础知识

1. 漏洞原理

CSRF 的核心在于黑客利用用户的身份认证信息,让用户在不知情的情况下向受信任的网站发送请求。例如,黑客可能诱导用户执行银行转账操作,而银行由于接收到用户的身份认证信息,误以为这是合法请求,从而导致损失。

2. 与 XSS 的区别
  • CSRF:通过借用用户的权限完成攻击,攻击者并未直接获取用户的权限。
  • XSS:攻击者直接窃取用户的权限,实施破坏。
3. 攻击过程
  1. 用户访问受信任网站 A,并登录。
  2. 网站 A 返回 Cookie 信息,用户可以正常操作。
  3. 用户未退出网站 A 的情况下,打开另一个恶意网站 B。
  4. 网站 B 返回恶意代码,并触发对网站 A 的请求。
  5. 浏览器携带用户的 Cookie 信息,向网站 A 发送请求。网站 A 误以为请求来自合法用户,从而执行操作。
4. 实例

黑客 Mallory 创建一个带有如下代码的恶意网站:

<img src="http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory" />

当受害者 Bob 登录银行后访问该恶意网站时,浏览器会自动发送该请求,附带 Bob 的 Cookie 信息。银行服务器在未识别请求来源的情况下,执行了转账操作,导致 Bob 的损失。

二、防御措施

1. 验证用户操作

在执行敏感操作(如转账)时,要求用户重新输入密码。

2. 验证 HTTP Referer 字段

通过检查 HTTP Referer 确保请求来源于受信任的页面。例如,银行网站的请求来源应为自身域名。缺点是部分浏览器可能被篡改 Referer 或用户自行关闭 Referer。

3. 请求地址中添加 Token

在请求中加入难以伪造的 Token,服务端验证 Token 的正确性。例如:

  • 对于 GET 请求:http://example.com/action?token=uniqueToken
  • 对于 POST 请求:
<input type="hidden" name="csrftoken" value="uniqueToken" />

Token 的安全性需特别注意,避免被外部恶意用户获取。

4. 设置验证码

在关键操作中要求用户完成验证码验证,防止自动化攻击。


SSRF

SSRF(Server Side Request Forgery,服务器端请求伪造)是一种通过伪造服务器请求,利用服务器访问攻击者无法直接访问资源的漏洞。

一、基础知识

1. 漏洞原理

SSRF 攻击通常利用网站提供的从远程服务器获取数据的功能,构造恶意请求,诱使服务器访问内部系统。例如:某网站允许用户输入图片链接以加载远程图片,攻击者可输入恶意链接,触发服务器访问内网。

2. 示例

某网站允许通过 URL 参数加载文章内容:

http://www.example.com/article.php?url=https://blog.example.com/article

攻击者可构造以下恶意 URL:

  • 访问本地文件:http://www.example.com/article.php?url=file:///etc/passwd
  • 访问本地服务:http://www.example.com/article.php?url=http://127.0.0.1:22
  • 使用其他协议:
    • dict://127.0.0.1:22/data:data2
    • gopher://127.0.0.1:2233/_test

通过这些 URL,攻击者可以利用服务器获取内部系统信息。

二、挖掘方法

1. 从功能上寻找
  • 分享功能:通过 URL 分享内容。
  • 转码服务:对 URL 内容进行优化处理。
  • 在线翻译:通过 URL 翻译文本。
  • 图片加载或下载:通过 URL 加载或下载图片。
  • 未公开 API:通过 URL 访问 API 功能。
2. 从 URL 关键字上寻找

关键字包括:shareurllinksrcsourcetargetimageURL 等。

三、防御措施

1. 限制请求协议

仅允许 HTTP 和 HTTPS 协议,禁止如 file://dict://gopher:// 等协议。

2. 限制访问 IP 地址

仅允许访问白名单内的外部 IP 地址,禁止访问本地或内网地址(如 127.0.0.1192.168.0.0/16)。

3. 限制访问端口

禁止访问敏感端口(如 223306 等),避免访问非必要服务。

4. 统一错误处理

设置统一的错误页面,防止信息泄露。例如,不返回具体的错误信息,而是返回通用提示。


通过了解 CSRF 和 SSRF 的原理及防御方法,可以有效地保护 Web 应用程序免受此类攻击,提高系统的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D仿星露谷物语开发12之创建道具列表

1、目标 道具是游戏的核心部分&#xff0c;道具包括你可以拾取的东西&#xff0c;你可以使用的工具和你能种的东西等。 本节就是创建道具的信息类。同时了解ScriptableObject类的使用。 2、创建道具枚举类 修改Assets -> Scripts -> Enums.cs脚本&#xff0c; 新增如…

如何修复 WordPress 中的“Error establishing a database connection”问题

如何修复 WordPress 中的“Error establishing a database connection”问题 在使用 WordPress 建站时&#xff0c;如果你看到“Error establishing a database connection”的提示&#xff0c;不要慌张。这通常意味着网站无法连接到数据库&#xff0c;因此无法显示内容。下面…

SQL 基础教程 - SQL SELECT 语句

SQL SELECT DISTINCT 语句 SELECT DISTINCT 语句用于返回唯一不同的值。 在表中&#xff0c;一个列可能会包含多个重复值&#xff0c;有时您也许希望仅仅列出不同&#xff08;distinct&#xff09;的值。 DISTINCT 关键词用于返回唯一不同的值。 SQL SELECT DISTINCT 语法 …

使用Anaconda管理R语言环境,并使用Jupyter Notebook编写R语言

文章目录 Anaconda中创建R环境0 官方教程存在的问题1 创建R语言环境2 安装常用包集合&#xff1a;r-essentials3 用VS Code的Jupyter插件写R 相信一直使用Python搞数据分析、机器学习的同学们会习惯使用 Anaconda管理不同的Python环境&#xff0c;并使用Jupyter Notebook&#…

3.5mm耳机接口硬件连接

结构 以最复杂的结构为例 简单的结构无非就是没有MIC&#xff08;麦克风&#xff09;接口 上图的5就是Detect的作用 上面这两款产品都为3.5mm的音频插座&#xff0c;图一 为连接4节的音频座&#xff0c;而且有两个开关&#xff0c;1接地&#xff0c;2接MIC&#xff0c;3接左声…

第25天:信息收集-项目系统一键打点资产侦察企查产权空间引擎风险监测利器部署

#知识点 1、信息收集-项目推荐-自动化环境部署 2、信息收集-项目推荐-自动化资产收集管理 一、自动化-网络空间-Yakit&TscanPlus 项目地址&#xff1a;https://www.yaklang.com/ 项目地址&#xff1a;https://github.com/TideSec/TscanPlus 集成Fofa、Hunter、Quake、Zoome…

vue3学习笔记(11)-组件通信

1.props 父传子 子传夫 父传子 接收用defineProps([]) 空字符串也是假 2.自定义事件 $event:事件对象 ref定义的数据在模板里面引用的时候可以不用.value 3.子传父 宏函数 触发事件 声明事件 defineEmits() 挂载之后3s钟触发 4.命名 肉串命名 5.任意组件通信 mitt pubs…

1 数据库(下):多表设计 、多表查询 + SQL中的with查询语法(MySQL8.0以后版本才支持这种新语法)+ 数据库优化(索引优化)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、多表设计1 多表设计-概述2 三种多表关系一对多&#xff08;多对一&#xff09;&#xff08;1&#xff09;无外键约束&#xff08;逻辑外键&#xff09;&…

Supermap iClient Webgl 粒子特效案例-消防场景

作者&#xff1a;Lzzzz 前言 WebGL 粒子特效的应用场景非常广泛&#xff0c;几乎可以在任何需要丰富视觉效果或动态表现的地方看到其身影。通过灵活运用颗粒系统&#xff0c;开发者可以创造出引人入胜的用户体验和视觉表现。 一、效果展示 二、实现步骤 1&#xff0c;构建…

Eclipse常用快捷键详解

文章目录 Eclipse常用快捷键详解一、引言二、编辑快捷键三、选择和移动快捷键四、行操作快捷键五、搜索和导航快捷键六、调试快捷键七、重构快捷键八、其他快捷键九、使用案例场景一&#xff1a;代码编写代码示例 场景二&#xff1a;代码调试场景三&#xff1a;代码重构代码示例…

【MATLAB】股票(和指数)数据下载--雅虎财经

文章目录 一、构建请求二、响应解读及整理2.1 响应2.2 数据提取和保存 三、通用函数3.1 函数3.2 调用示例 四、雅虎财经股票、指数代码4.1 指数4.2 股票 五、GUI界面、可执行程序 雅虎2021年就退出中国了&#xff0c;你懂的。 能下载股票等数据的财经网站、软件也很多。我写着玩…

Unity 使用UGUI制作卷轴开启关闭效果

视频效果 代码 using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options;public class JuanZhou : MonoBehaviour {[SerializeField]private …

Bash 脚本教程

注&#xff1a;本文为 “Bash 脚本编写” 相关文章合辑。 BASH 脚本编写教程 as good as well于 2017-08-04 22:04:28 发布 这里有个老 American 写的 BASH 脚本编写教程&#xff0c;非常不错&#xff0c;至少没接触过 BASH 的也能看懂&#xff01; 建立一个脚本 Linux 中有…

NPM组件包 vant部分版本内嵌挖矿代码

Vant 是一个轻量、可定制的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 Vant 2 版本&#xff1a;https://vant-ui.github.io/vant/v2/#/zh-CN/home V…

在基于Centos7的服务器上启用【Gateway】的【Clion Nova】(即 ReSharper C++ 引擎)

1. 检查启动报错日志&#xff0c;目录在 ~/.cache/JetBrains/CLion202x.x.x/log/backend.202x-xx-xx_xxxx.xxxx-err.log 2. 大致可能有两种报错 a. Process terminated. Couldnt find a valid ICU package installed on the system. 这个报错只需要装一下 libicu-devel 包即可…

Spring-Mybatis 2.0

前言&#xff1a; 第一点&#xff1a;过于依赖代码生成器或AI&#xff0c;导致基于mybaits的CRUD通通忘了&#xff0c;所以为了找回遗忘的记忆&#xff0c;有了该系列内容。 第二点&#xff1a;通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能…

Cypress测试框架详解:轻松实现端到端自动化测试

端到端自动化测试工具市场中&#xff0c;Cypress正以其易用性和强大功能&#xff0c;迅速成为开发者和测试人员的首选工具之一。无论是前端开发还是测试&#xff0c;Cypress都能在性能和效率上脱颖而出。 那么&#xff0c;Cypress具体能为端到端测试带来哪些便利&#xff1f;它…

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析&#xff0c;他们一个是Array&#xff08;动态数组&#xff09;的数据结构&#xff0c;一个是Linked&#xff08;链表&#xff09;的数据结构&#x…

WebRTC:实现浏览器与移动应用的实时通信

1.技术简介 &#xff08;Web Real-Time&#xff09;是一种开放式实时通信技术&#xff0c;旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输&#xff0c;而无需安装插件或额外软件。它支持网络应用中的点对点通信&#xff0c;例如视频聊天、语音通话…

Microsoft word@【标题样式】应用不生效(主要表现为在导航窗格不显示)

背景 随笔。Microsoft word 2013基础使用&#xff0c;仅做参考和积累。 问题 Microsoft word 2013&#xff0c;对段落标题文字应用【标题样式】不生效&#xff08;主要表现为在导航窗格不显示&#xff09;。 图1 图2 观察图1和图2&#xff0c;发现图1的文字在应用【标题一】样…