XML
XML是The Extensible Markup Language(可扩展标识语言)的简写。XML最初设计的目的是弥补HTML的不足,后来逐渐用于网络数据的转换和描述。XML的设计宗旨是传输数据,而非显示数据。
目前,XML在WEB中的应用已经非常广泛。下面举一个简单的XML实例:
-
<?xml version=
"1.0" encoding=
"utf-8">
-
-
<manager>
-
-
<admin id=
"1">
-
-
<name>admin</name>
-
-
<password>admin</password>
-
-
<admin>
-
-
<admin id=
2>
-
-
<name>root</name>
-
-
<password>root</password>
-
-
</admin>
-
-
</manager>
-
XML注入
XML与HTML一样,也存在注入攻击,甚至在注入的方法上也非常相似。
对于上面的xml文件,如果攻击者能够掌控password字段,那么就会产生XML注入,如攻击者输入:
admin </password></admin><admin id="100"><name>hack</name><password>hacker</password></admin>
最终的修改后的XML为:
-
<?xml version=
"1.0" encoding=
"utf-8">
-
<manager>
-
<admin id="1">
-
<name>admin
</name>
-
<password>admin
</password>
-
</admin>
-
<admin id="100">
-
<name>hack
</name>
-
<password>hacker
</password>
-
</admin>
以上的代码相当于添加了一个名为hack、密码为:hacker的新的用户到管理员组内!
XML注入时的两大注意点:
(1)标签闭合(关键所在)
(2)获取XML的表结构
XML注入的前提条件
(1)用户能够控制数据的输入
(2)程序有拼凑的数据
XML注入防御
(1)对用户的输入进行过滤
(2)对用户的输入进行转义
预定义字符 | 转以后的预定义字符 |
< | < |
> | > |
& | & |
' | ' |
" | " |