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

XML 注入与修复

问题:
XML 注入攻击,和 SQL 注入的原理一样,都是攻击者输入恶意的代码来执行自身权限以外的功能。
XML 是存储数据的一种方式,如果在修改或者查询时,没有做转义,直接输入或输出数据,都将导
XML 注入漏洞。攻击者可以修改 XML 数据格式,增加新的 XML 节点,对数据处理流程产生影响。
攻击下面是一个保存注册用户信息为 XML 格式的例子:
final String GUESTROLE = "guest_role";
...
//userdata 是准备保存的 xml 数据,接收了 name email 两个用户提交来的数据。
String userdata = "<USER role="+
GUESTROLE+
"><name>"+
request.getParameter("name")+
"</name><email>"+
request.getParameter("email")+
"</email></USER>";
// 保存 xml
userDao.save(userdata);
可以看到,这段代码没有进行任何的过滤操作。一个普通用户注册后,会产生这样一条数据记录:
<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
<name>user1
</name>
<email>user1@a.com
</email>
</USER>
攻击者输入自己 email 时,可以输入如下代码:
user1@a.com</email></USER><USER role="admin_role"><name>lf</name><email>user2@a.com
最终用户注册后,数据就变成了:
<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
<name>user1
</name>
<email>user1@a.com</email>
</USER>
<USER role="admin_role">
<name>lf</name>
<email>user2@a.com
</email>
</USER>
可以看到,多出了一条 role=“admin_role” 的管理员 lf 。达到攻击目的。
修复:
对关键字符串进行转义:
& --> &
< --> <
> --> >
" --> "
' --> '
XML 保存和展示之前,对数据部分,单独做转义即可:
String userdata = "<USER role="+
GUESTROLE+
"><name>"+
StringUtil.xmlencode(request.getParameter("name"))+
"</name><email>"+
StringUtil.xmlencode(rrequest.getParameter("email"))+
"</email></USER>";
http://www.xdnf.cn/news/995635.html

相关文章:

  • 接口测试不再难:智能体自动生成 Postman 集合
  • Apache 反向代理Unity服务器
  • Golang启用.exe文件无法正常运行
  • NGINX 四层 SSL/TLS 支持ngx_stream_ssl_module
  • vue3集成高德地图绘制轨迹地图
  • 鸿蒙 UI 开发基础语法与组件复用全解析:从装饰器到工程化实践指南
  • uni-app 小程序 Cannot read property ‘addEventListener‘ of undefined, mounted hook
  • 一.干货干货!!!SpringAI入门到实战-小试牛刀
  • 山东大学《Web数据管理》期末复习宝典【万字解析!】
  • Mac 系统 Node.js 安装与版本管理指南
  • 使用Gitlab CI/CD结合docker容器实现自动化部署
  • React 集中状态管理方案
  • CentOS变Ubuntu后后端程序SO库报错,解决方案+原理分析!
  • .NET 中的异步编程模型
  • [电赛]MSPM0G3507学习笔记(二) GPIO:led与按键(流水灯、呼吸灯,短按长按与双击,ui预览)
  • 基于OpenCV和深度学习实现图像风格迁移
  • VR 地震安全演练:“透视” 地震,筑牢企业安全新护盾​
  • 16层混压PCB的精密重构:高频基板局部化的黄金法则
  • 【Go-补充】实现动态数组:深入理解 slice 与自定义实现
  • 机器学习 [白板推导](六)[核方法、指数族分布]
  • 【WebSocket】WebSocket架构重构:从分散管理到统一连接的实战经验
  • 新零售视域下实体与虚拟店融合的技术逻辑与商业模式创新——基于开源AI智能名片与链动2+1模式的S2B2C生态构建
  • C#事件基础模型代码
  • 【技术追踪】MMFusion:用于食管癌淋巴结转移诊断的多模态扩散模型(MICCAI-2024)
  • Linux部署bmc TrueSight 监控agent步骤
  • Java学习笔记之:初识nginx
  • js判断手机操作系统(ios、安卓、华为)
  • 分享在日常开发中常用的ES6知识点【面试常考】
  • “储能+热泵+AI”三维驱动,美的能源定义能源科技新未来
  • 【深度解读】混合架构数据保护实战