安全编码技术。处理XML数据,第一部分

发表于2017年12月10日
作者:Pieter De Cremer
案例研究

安全编码技术。处理XML数据,第一部分

发表于2017年12月10日
作者:Pieter De Cremer
查看资源
查看资源

可扩展标记语言(XML)是一种标记语言,用于对文件进行编码,其格式既便于机器处理又便于人类阅读。然而,这种常用的格式包括多种安全缺陷。在这篇与XML有关的第一篇博文中,我将解释通过使用模式安全处理XML文档的基本知识。

OWASP将与XML和XML模式有关的不同漏洞分为两类。

畸形的XML文件

畸形的XML文档是不遵循W3C XML规范的文档。导致畸形文档的一些例子是删除了一个结尾标签,改变了不同元素的顺序或使用了禁止的字符。所有这些错误都应该导致一个致命的错误,并且该文档不应该进行任何额外的处理。

为了避免由畸形文档引起的漏洞,你应该使用一个经过良好测试的XML解析器,该解析器遵循W3C规范,处理畸形文档的时间不会明显延长。

无效的XML文件

无效的XML文档形成得很好,但包含了意想不到的值。在这里,攻击者可能会利用那些没有正确定义XML模式的应用程序来识别文档是否有效。下面你可以找到一个简单的例子,如果不正确验证,可能会产生意想不到的后果。

一个网络商店,以XML数据存储其交易。

   <purchase></purchase>
     <id>123</id>
     <price>200</price>
   

And the user only has control over the <id> value. It is then possible, without the right counter measures, for an attacker to input something like this:</id>

   <purchase></purchase>
     <id>123</id>
     <price>0</price>
     <id></id>
     <price>200</price>
   

If the parser that processes this document only reads the first instance of the <id> and <price> tags this will lead to unwanted results. </price></id>

也有可能是模式的限制性不够,或者其他输入验证不充分,所以负数、特殊小数(如NaN或Infinity)或过大的数值可以被输入到不期望的地方,导致类似的非预期行为。

避免与无效的XML文档有关的漏洞应该通过定义精确和限制性的XML Schema来完成,以避免数据验证不当的问题。

下一篇博文我们将讨论一些针对XML文档的更高级的攻击,如Jumbo Payloads和令人恐惧的OWASP十大排名第四的XXE。

同时,你可以在我们的门户网站上磨练或挑战你在XML输入验证方面的技能

XML和XML模式的规范包括多种安全缺陷。同时,这些规范提供了保护XML应用所需的工具。即使我们使用XML模式来定义XML文档的安全性,它们也可以被用来进行各种攻击:文件检索、服务器端请求伪造、端口扫描或暴力强迫。

https://www.owasp.org/index.php/XML_Security_Cheat_Sheet

查看资源
查看资源

作者

皮特-德-克雷默

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

安全编码技术。处理XML数据,第一部分

发表于2017年12月10日
作者:Pieter De Cremer

可扩展标记语言(XML)是一种标记语言,用于对文件进行编码,其格式既便于机器处理又便于人类阅读。然而,这种常用的格式包括多种安全缺陷。在这篇与XML有关的第一篇博文中,我将解释通过使用模式安全处理XML文档的基本知识。

OWASP将与XML和XML模式有关的不同漏洞分为两类。

畸形的XML文件

畸形的XML文档是不遵循W3C XML规范的文档。导致畸形文档的一些例子是删除了一个结尾标签,改变了不同元素的顺序或使用了禁止的字符。所有这些错误都应该导致一个致命的错误,并且该文档不应该进行任何额外的处理。

为了避免由畸形文档引起的漏洞,你应该使用一个经过良好测试的XML解析器,该解析器遵循W3C规范,处理畸形文档的时间不会明显延长。

无效的XML文件

无效的XML文档形成得很好,但包含了意想不到的值。在这里,攻击者可能会利用那些没有正确定义XML模式的应用程序来识别文档是否有效。下面你可以找到一个简单的例子,如果不正确验证,可能会产生意想不到的后果。

一个网络商店,以XML数据存储其交易。

   <purchase></purchase>
     <id>123</id>
     <price>200</price>
   

And the user only has control over the <id> value. It is then possible, without the right counter measures, for an attacker to input something like this:</id>

   <purchase></purchase>
     <id>123</id>
     <price>0</price>
     <id></id>
     <price>200</price>
   

If the parser that processes this document only reads the first instance of the <id> and <price> tags this will lead to unwanted results. </price></id>

也有可能是模式的限制性不够,或者其他输入验证不充分,所以负数、特殊小数(如NaN或Infinity)或过大的数值可以被输入到不期望的地方,导致类似的非预期行为。

避免与无效的XML文档有关的漏洞应该通过定义精确和限制性的XML Schema来完成,以避免数据验证不当的问题。

下一篇博文我们将讨论一些针对XML文档的更高级的攻击,如Jumbo Payloads和令人恐惧的OWASP十大排名第四的XXE。

同时,你可以在我们的门户网站上磨练或挑战你在XML输入验证方面的技能

XML和XML模式的规范包括多种安全缺陷。同时,这些规范提供了保护XML应用所需的工具。即使我们使用XML模式来定义XML文档的安全性,它们也可以被用来进行各种攻击:文件检索、服务器端请求伪造、端口扫描或暴力强迫。

https://www.owasp.org/index.php/XML_Security_Cheat_Sheet

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。