XML实体

实体可以用以下3种方式分类:
1、通用实体和参数实体,通用实体(general entity)用于XML文档中,在文档中通过引用来生成文字数据或二进制数据;而参数实体(parameter entity)只能用于DTD中。
2、内部实体和外部实体,内部实体(internal entity)完全引用它的文档内定义;外部实(external entity)的内容则全部来源于外部文档。
3、解析实体和未解析实体,解析实体(parsed entity)的内容是规范的XML文本;未解析实体(unparsed entity)的内容为二进制数据,它不应该被XML处理器解析。

3种实体可以组合出8种实体,但实际上XML只用到5种形态:
1、通用内部解析实体
2、通用外部解析实体
3、通用外部未解析实体
4、参数内部解析实体
5、参数外部解析实体


1、通用内部解析实体
<!ENTITY alpha "α">

5个预定义实体:
&amp;    &
&apos;   '
&gt;     >
&lt;     <
&quot    "

实体可以嵌套

2、参数内部解析实体:
定义:
<!ENTITY % name "
<!ELEMENT ....>
....
">
引用:
%name;

3、通用外部解析实体
可以使用SYSTEM和PUBLIC关键字来进行宣告
<!ENTITY topic SYSTEM "topic.xml">
引用:&topic;

4、通用外部未解析实体
宣告格式:
<!ENTITY 实体名 SYSTEM 二进制数据位置 NDATA 标记名>
例:
<!ENTITY pic1 SYSTEM "mypic.jpg" NDATA JPEG>

标记的定义格式:
<!NOTATION 标记名 SYSTEM 标记描述文字>

可以是以下内容:
<!NOTATION JPEG SYSTEM "acdsee.exe">
<!NOTATION SOMEFORMAT SYSTEM "http://www.163.com>
<!NOTATION GIF SYSTEM "fdjskjfksjd">

5、参数外部解析实体
<!ENTITY % book_dec SYSTEM "book.dtd">
%book_dec;

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XML实体执行命令漏洞(XML External Entity,简称XXE),是指在XML文档的解析过程中,利用实体注入技术来执行恶意命令的一种攻击方式。对于该问题,以下是一个用300字中文回答: XML实体执行命令java xxe是一种漏洞攻击方式。当解析XML时,攻击者通过在XML文档中注入带有恶意代码的实体,可以导致服务器执行恶意命令或读取敏感数据。 在Java中,XXE漏洞可以通过DocumentBuilderFactory解析XML时使用的解析器特性(如“<!DOCTYPE”、“DOCTYPE”和“<ENTITY>”等)来注入实体。攻击者可以构造恶意的XML文档,通过实体注入技术注入包含恶意代码的外部资源引用。当XML文档被解析时,解析器会尝试从外部资源加载实体,如果攻击者在外部资源中包含了一些系统命令,那么这些命令就会被执行。 为防止XXE漏洞,应对输入进行合理过滤和安全处理。可采取以下几种防护措施:1.禁止或限制解析器使用外部实体和外部DTD文件。2.使用安全的解析器,如Woodstox、SAX、SAXON等,它们可以禁用外部实体和DTD。3.对输入进行严格的验证和过滤,确保只接受合法的XML数据。4.采用白名单机制,限制允许的XML元素、属性和实体。 总之,通过对输入进行严格验证和过滤,禁用或限制外部实体和DTD,选择安全的解析器等措施,可以有效防范XML实体执行命令java xxe漏洞带来的危害。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值