1. 程式人生 > >28. 注入篇——XML注入

28. 注入篇——XML注入

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)對使用者的輸入進行轉義

預定義字元轉以後的預定義字元
<&lt;
>&gt;
&&amp;
'&apos;
"&quot;
註明:部分記憶體參考《WEB安全深度剖析》