XSD中maxOccurs =“unbounded”不安全吗?

时间:2016-11-14 21:35:43

标签: xml security xsd

我有一个XML Schema,我找到了maxOccurs="unbounded"。当谷歌搜索我发现它不是编写XML模式的安全方式,并看到建议在那里使用特定数字而不是未绑定。但问题是我没有那个特定的合理数字在那里使用,所以当我没有特定的号码设置那里时,有没有办法让它安全。

<sequence>
    <element maxOccurs="unbounded" minOccurs="0" name="Application" 
             nillable="true" type="impl:Application"/>
</sequence>

3 个答案:

答案 0 :(得分:4)

否。在XSD中使用maxOccurs="unbounded"没有任何内在错误。

你读过的任何(未被引用的)引用都可能是因为想要避免缓冲区溢出或某些其他利用某些特定XML软件的某些弱点。进一步的猜测毫无价值;或者提供可以评估其可信度的具体参考,或者将您的担忧撤回到完全没有根据的地方。

答案 1 :(得分:1)

您可能希望通过限制可以发送给他们的数据量来保护系统免受DDoS攻击。我不认为XML Schema是正确的技术。

除了其他任何东西,使用有限的maxOccurs值是不够的。例如,您还需要限制元素之间可能出现的注释数量,并且XML Schema无法用于限制注释或处理指令。

如果你想限制传入文件的大小,你需要一种不同的(可能更简单)防御。

答案 2 :(得分:0)

我认为这完全取决于您正在构建的系统。如果你有理由相信实现系统会以某种方式遭受无限数量的“应用程序” - 元素(无论这意味着什么?),那么也许它可能是一个问题 - 但它本身并没有任何本质上的错误。

请记住,XSD是您为系统定义某些规则的地方;在某些情况下,某些规则可能是适当的,在其他情况下,它们可能是危险的。根据您问题中的有限信息,我看不出任何具体的理由担心(再次:您需要考虑实施系统的实际后果!)。