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

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

如何理解服务器端请求伪造(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.lryc.cn/news/16840.html

相关文章:

  • LeetCode:239. 滑动窗口最大值
  • JS 函数参数(动态参数、剩余参数)
  • 365天深度学习训练营-第J3周:DenseNet算法实战与解析
  • Parisland NFT 作品集
  • uniapp: 基础开发官网文档
  • mybatis中配置连接池的原理介绍分析
  • 二叉树——路径总和
  • WebDAV之π-Disk派盘+文件管理器
  • form表单单输入框回车提交事件处理
  • c++常用stl算法
  • 非对称密钥PKCS#1和PKCS#8格式互相转换(Java)
  • java获取当前时间的方法:LocalDateTime、Date、Calendar,以及三者的比较
  • npm link
  • Docker 如何配置镜像加速
  • 阅读笔记7——Focal Loss
  • ZCMU--5009: 龙虎斗
  • 创建项目(React+umi+typeScript)
  • FISCO BCOS(二十七)———java操作WeBase
  • 失眠时还在吃它?有风险,你了解过吗
  • 星戈瑞收藏Sulfo-CY7 amine/NHS ester/maleimide小鼠活体成像染料标记反应
  • 守护最后一道防线:Coremail邮件安全网关推出邮件召回功能
  • Python实战之小说下载神器(二)整本小说下载:看小说不用这个程序,我实在替你感到可惜*(小说爱好者必备)
  • ChatGPT三个关键技术
  • 考试系统 (springboot+vue前后端分离)
  • ChatGPT告诉你:项目管理能干到60岁吗?
  • Python自动化测试框架【Allure-pytest功能特性介绍】
  • ToB 产品拆解—Temu 商家管理后台
  • Android Studio的笔记--socket通信
  • @Async 注解
  • Redis:缓存穿透、缓存雪崩和缓存击穿(未完待续)