当前位置: 首页 > 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://VsyewLB8.pcshb.cn
http://boRDmm8r.pcshb.cn
http://9kBmuGyC.pcshb.cn
http://dDbGZv0U.pcshb.cn
http://iRmXDlCx.pcshb.cn
http://Zo3PyVEY.pcshb.cn
http://toNIm0Z1.pcshb.cn
http://Eu4Bzdai.pcshb.cn
http://nvGqPWYl.pcshb.cn
http://RYDHTo8I.pcshb.cn
http://siHQMppr.pcshb.cn
http://xrpahjfl.pcshb.cn
http://bBfZ5kUU.pcshb.cn
http://meCzWICn.pcshb.cn
http://XHwtMR5M.pcshb.cn
http://bz1KoNcV.pcshb.cn
http://7lJgm2hm.pcshb.cn
http://oS7QZImL.pcshb.cn
http://UprGmL6j.pcshb.cn
http://aY9MjY9c.pcshb.cn
http://j65aiEpE.pcshb.cn
http://5quEJPs6.pcshb.cn
http://PYAqV3uV.pcshb.cn
http://OkY4UPqB.pcshb.cn
http://sk0W4J0m.pcshb.cn
http://Jncr6PqM.pcshb.cn
http://h9Fvi7kd.pcshb.cn
http://xOCTJ80t.pcshb.cn
http://hsuSBIpW.pcshb.cn
http://c50jRWrj.pcshb.cn
http://www.dtcms.com/a/245431.html

相关文章:

  • Docker入门篇--从安装到使用
  • 回调接口模式
  • Docker|简单入门
  • Android自动化AirScript
  • Appium+python自动化(二十)-- Monkey日志
  • ATM 模拟器 Golang 程序--示例
  • 油烟净化设备安装规范
  • 基于SpringBoot的校园网上求职系统设计与实现
  • 双系统(win+linux)根目录扩容(不掉GPU驱动)
  • 【leetcode】226. 翻转二叉树
  • 一分钟了解MCP
  • 无人机安防系统是什么?主流无人机安防平台有哪些?
  • iOS App上线前的安全防线:项目后期如何用Ipa Guard与其他工具完成高效混淆部署
  • @RequestBody和@ResponseBody注解的作用是什么
  • 告别手动做PPT!4款AI工具实现自动化生成
  • 使用 VLC Media Player 轻松提取视频中的音频文件
  • Python 实现 Web 请求与响应
  • AI 工具打造专业级 PPT 配图:从文字到视觉的高效转化指南
  • 关键领域软件测试新范式:如何在安全合规前提下提升效率?
  • 岗位竞聘竞选报告个人简历PPT模版分享
  • xhtml2pdf中文屏幕溢出问题
  • 【数据传输常用命令】:服务器与本地之间的数据传输
  • 服务器-客户端下kafka的消息处理流程
  • SpreadJS 中 HTML Canvas 的性能优势深度解析
  • 基于 Nginx 服务器的泛域名 SSL 证书申请与部署
  • 自建RustDesk服务器
  • 基于YOLOv11与单目测距的实战教程:从目标检测到距离估算
  • Java反射机制深度解析与实战应用
  • Linux中升级或者切换python版本
  • 数据集-目标检测系列- 孔雀 数据集 peacock >> DataBall