<!DOCTYPE filename
[
<!ENTITY entity-name "entity-content"
]>
。)。
entity的定义语法为:
如果要引用一个外部资源:
<!DOCTYPE test
[
<!ENTITY test SYSTEM "http://xxx.xxx.com/test.xml">
]>
ENTITY可以使用SYSTEM关键字,调用外部资源,而这里是支持很多的协议,如:http;file等
然后,在其他DoM结点中可以使用如:&test;
引用该实体内容.
那么,如果在产品功能设计当中,解析的xml是由外部可控制的,那将可能形成,如:文件读取,DoS,CSRF等
XML 实体攻击必须满足三个条件:
1、标准的XML解析库支持使用实体引用
2、XML格式允许在XML文章中定义定制实体
3、XML规范允许使用外部应用来定义实体