Web安全之服务器端请求伪造(SSRF)类漏洞详解及预防

news/2024/4/25 22:39:55/文章来源:https://blog.csdn.net/luduoyuan/article/details/129171983

如何理解服务器端请求伪造(SSRF)类漏洞

当服务器向用户提交的未被严格校验的URL发起请求的时候,就有可能会发生服务器端请求伪造(SSRF,即Server-Side Request Forgery)攻击。

SSRF是由攻击者构造恶意请求URL,由服务端发起请求的安全漏洞。攻击者可以利用SSRF漏洞来攻击到内部系统,因为服务器请求天然发生在系统内部。SSRF 形成的原因大都是由于服务端提供了从其他服务端应用获取数据的功能,但又没有对目标地址做校验与限制。

应用程序为了给用户提供更多更方便的功能,从另一个URL获取数据的场景越来越多,因此SSRF漏洞也越来越多。此外,由于云服务和体系结构的复杂性,SSRF攻击产生的影响也越来越大。

举个例子

假设一个电商网站,展示商品详情的时候也同时展示库存数量,库存数量需要提供商品详情信息的后端服务通过REST API查询其他后端服务得到,而其他后端服务的URL地址直接包含在查询商品详情的接口中,作为此接口的一个参数。所以展示商品详情界面会发出如下请求:

POST/product/detail HTTP/1.0
Content-Type: application/json{"productId:66","stockApi":"http://stock.xxx.com/stock/detail"}

这种情况下,攻击者可以通过修改请求参数stockApi以指定任意URL,例如:

POST/product/detail HTTP/1.0
Content-Type: application/json{"productId:66","stockApi":"http://localhost/admin"}

此时,服务端就会访问http://localhost/admin并将其内容返回给用户,攻击者就可以采用这用方式来尝试获取到服务器相关的信息。

如何预防SSRF攻击

  • 严格校验用户输入的URL,可以使用白名单过滤来限制输入,只允许特定的协议、主机和端口。

  • 不要把原始的响应数据返回给客户端。

  • 限制Web应用程序的网络访问权限,可以让远程资源访问功能使用单独的网络。

  • 限制Web应用程序对服务器端资源的访问权限,可以使用访问控制列表(ACL)来限制应用程序可以访问的URL和端口。

  • 加强代码审核,通过人工审核和自动化审核工具审核的方式来发现潜在的SSRF漏洞。

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

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

相关文章

URP渲染管线光照机制剖析

上一节通过剖析URP 摄像机了解摄像机的机制,本节来分析URP的光照的主要机制,并通过与内置的向前渲染管线做对比,来比较它们的与不同。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些…

小程序电商商城怎么搭建?

做电商的企业商家都会首先搭建好自己的电商商城,尤其是现在小程序盛行的时代,小程序电商商城更是做电商的企业商家的必备媒介。那么小程序电商商城怎么搭建?下面给大家说说一些流程作为参考。 一、准备事项 搭建小程序电商商城,…

打不过就拉拢!ChatGPT和MidJourney已经成我小秘书!太爽了

大家好,我是晓衡。这两周,我战斗力爆棚了!每天大概睡了四~五个小时,而且中午也没有休息过,但精神却还很亢奋。直到周一下午,身体才有种被掏空的感觉,晚上 10 点就睡了。可能是兴奋劲还在&#x…

git 的使用方法(上 - 指令)

目录前言:一、Git 是什么?二、SVN与Git的最主要的区别?三、Git 安装四、git 配置1. 创建仓库 - repository2. 配置3. 工作流与基本操作五、Git 的使用流程1. 仓库中创建 1.txt文件2. 查看工作区的文件状态3. 添加工作区文件到暂存区4. 创建版…

蓝桥杯:聪明的猴子

题目链接:聪明的猴子https://www.lanqiao.cn/problems/862/learning/ 目录 题目描述 输入描述 输出描述 输入输出样例 运行限制 解题思路: 最小生成树 AC代码(Java): 课后练习: 题目描述 在一个热带雨林中生存…

C++11 条件变量(condition_variable)

一、总述 在C11中,我们可以使用条件变量(condition_variable)实现多个线程间的同步操作;当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线程才会被唤醒。 主要成员函数如下&#x…

【java】Spring Cloud --Spring Cloud Alibaba 微服务解决方案

文章目录1、Spring Cloud Alibaba 是什么先说说 Spring CloudSpring Cloud Alibaba和Spring Cloud 的区别和联系Spring Cloud Alibaba2、Spring Cloud Alibaba 包含组件阿里开源组件阿里商业化组件集成 Spring Cloud 组件3、Spring Cloud Alibaba 功能服务注册与发现支持多协议…

教你如何搭建培训机构-学员管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建培训机构-学员管理。1.2、应用场景学员信息报表展示所有正式学员信息,可对学员进行分配班级、转课、续课、扩科、退课、阶段测评等操作。2、设置方法2.1、表单搭建1)新建表单【学员】,字段…

和日期相关的代码和bug——一道力扣题中的小发现

目录 Day of the Week 题目大意 常规方法 Python代码 Golang代码 C代码 基姆拉尔森公式 Python代码 Golang代码 C代码 使用库函数 Python代码 Golang代码 C代码 Day of the Week Given a date, return the corresponding day of the week for that date. The inp…

微信协议网页版微信协议解析

最近在做个微信机器人,所以研究了网页版的微信协议及相关接口,在这里简单总结一下。从表面上看,对于网页版微信我们的使用流程是这样的:很简单,只有四步,但如果细化到内里细节的话,上面这简单四…

华为OD机试真题 用 C++ 实现 - 服务依赖

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

ADC模数转换器(基于STM32F407)

简介 Analog-to-digital converters(模拟数字转换器),我的STM32F407中内置3个ADC,每个 ADC 有 12 位、10 位、8 位和 6 位可选,ADC 具有独立模式、双重模式和三重模式,对于不同 AD 转换要求几乎都有合适的…

mysql高级-day03

mysql高级-day03 集群: 主从模式(高可用 读写分离) 主主模式 主从级联 主主级联半同步模式(理解 表达出来)面试异步模式(理解 表达出来)面试搭建主从 搭建主主(docker)数据分片: 水平 垂直(数据库 表)面试策略有哪些(负载均衡策略)4种读写分离 主从切换 1 Mysql复制架构 1.1…

Linux 文件基本属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。 为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在 Linux 中我们通常使用以下两个命…

JAVA虚拟机JVM之内存模型

内存模型 java 内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。 关于它的权威解释,请参考 https://download.oracle.com/otn-pub/jcp/memory_model-1.0…

mysql间隙锁

首先我们这里有一个表t,其中的数据如下图所示 注意哈 update由于操作的最新的值,所以是当前读! 另外一个事务插入 8的时候发生锁 而我对id为10的数据进行更新,却不会被锁住 分析:在执行当前读时,由于id7不存…

斗地主洗牌发牌-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

【案例6-4】 斗地主洗牌发牌 【案例介绍】 1.任务描述 扑克牌游戏“斗地主”,相信许多人都会玩,本案例要求编写一个斗地主的洗牌发牌程序,要求按照斗地主的规则完成洗牌发牌的过程。一副扑克总共有54张牌,牌面由花色和数字组成…

JAVA-JDBC

文章目录1、什么是JDBC?2、JDBC相关的类库在哪里?3、JDBC本质上是一堆什么呢?4、JDBC开发之前的准备工作?5、JDBC编程六步JDBC课堂笔记1、什么是JDBC? Java DataBase Connectivity 在java语言中编写sql语句&#xff0…

ChatGPT是什么?为何会引爆国内算力需求?

过去十年中,通过“深度学习大算力”从而获得训练模型是实现人工智能的主流技术途径。由于深度学习、数据和算力这三个要素都已具备,全世界掀起了“大炼模型”的热潮,也催生了大批人工智能企业。大模型是人工智能的发展趋势和未来大模型&#…

Docker----------day5---安装redis集群

1.哈希取余分区 2亿条记录就是2亿个k,v,我们单机不行必须要分布式多机,假设有3台机器构成一个集群,用户每次读写操作都是根据公式: hash(key) % N个机器台数,计算出哈希值,用来决定数据映射到哪一个节点上。…