【问题标题】:Validate DTD and XXE in XML using libxml2 objective c使用 libxml2 目标 c 在 XML 中验证 DTD 和 XXE
【发布时间】:2016-01-24 13:33:06
【问题描述】:
<?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 攻击。

【问题讨论】:

    标签: ios objective-c libxml2 dtd xxe xml


    【解决方案1】:

    当您说“我想验证 XML 是否包含 DTD”时,您的意思是 (a)“我想使用文档中存在的 DTD,如果有的话,否则我想使用 myfine 中的 DTD。 dd”?或 (b) “无论 XML 实例中存在什么,我都想针对 onetrue.dtd 进行验证”?

    在情况 (a) 中,测试文档类型声明的一种方法是加载文档并应用适当的正则表达式来查找字符串 '

    在情况 (b) 中,您不需要检查 XML 是否包含对 DTD 的引用;您只需告诉 libxml 使用与 xmllint --dtdvalid 选项等效的 C API 来验证 onetrue.dtd。并且您可以通过在 DTD 中不包含不可接受实体的实体声明来防止不可接受的外部或内部实体。

    这两个答案都假设当您询问“向服务器发送请求 XML 时如何防止 XXE 攻击”时,您正在寻求保护服务器而不是请求者免受 XXE 攻击。我不知道如何保护请求者,因为我不明白如何使用实体处理来攻击请求者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2011-11-17
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      相关资源
      最近更新 更多