簡體   English   中英

使用libxml2目標C驗證XML中的DTD和XXE

[英]Validate DTD and XXE in XML using libxml2 objective c

<?xml version="1.0" ?>
<!DOCTYPE list [
<!ELEMENT list (bsinfo+)>
<!ELEMENT bsinfo (id,title,desc,books)>
]>

<list>
<bsinfo>

在我的項目中,我想驗證XML是否包含DTD。 當前,我正在使用Libxml解析器來解析XML。

在LibXML中,如何檢查XML是否包含DTD。

向服務器發送請求XML時,如何防止XXE攻擊。

當您說“我想驗證XML是否包含DTD”時,您的意思是(a)“我想使用文檔中存在的DTD(如果有),否則我想在myfine.dtd中使用DTD”? 或(b)“無論XML實例中存在什么,我都想針對onetrue.dtd進行驗證”?

在情況(a)中,測試文檔類型聲明的一種方法是加載文檔並應用適當的正則表達式來查找字符串'

在情況(b)中,您無需檢查XML是否包含對DTD的引用; 您只需使用C API等效的xmllint --dtdvalid選項,告訴libxml針對onetrue.dtd進行驗證。 而且,通過在DTD中沒有不可接受實體的實體聲明,可以防止不可接受的外部或內部實體。

這兩個答案都假設您在詢問“向服務器發送請求XML時,如何才能防止XXE攻擊”時,您正在尋求保護服務器而不是請求者免受XXE攻擊。 我不知道如何保護請求者,因為我不知道如何使用實體處理來攻擊請求者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM