【问题标题】:Schema to validate a .xsl template in C#在 C# 中验证 .xsl 模板的架构
【发布时间】:2014-10-07 20:19:20
【问题描述】:

作为从模板生成简单 Excel 文件的一部分,我们在一个项目中有以下代码:

StreamReader reader = new StreamReader(DeploymentFolder + "bin\\Excel.xsl");
XmlTextReader xRdr = new XmlTextReader(reader);
xt.Load(xRdr,new XsltSettings(false,false),null);

它工作得很好,但是代码不安全,因为它容易受到注入攻击。理想情况下,它应该根据模式进行验证。那么在哪里可以找到验证 XSL 文件的模式呢? .NET 中是否有内置架构可以做到这一点?

【问题讨论】:

    标签: c# .net xml validation xslt


    【解决方案1】:

    有用于 XSLT 2.0 和 XSLT 3.0 的官方 W3C 模式,链接自 XSLT 2.0 和 XSLT 3.0 规范。我认为 XSLT 1.0 也有一个非官方的版本。

    但他们不会帮助你。在 XSLT 中进行注入攻击的方式通常是调用用另一种语言(例如 C#)编写的扩展函数(例如,调用 exec()),并且您无法区分扩展函数和内置函数架构的级别。某些产品(例如 Saxon)具有禁用扩展功能的开关,使用该开关非常安全;您可能还需要一个 URIResolver/XMLResolver 来监管 document() 函数的使用。我不知道微软的 System.Xml.Xsl 处理器是否有这样的开关,如果没有我会感到惊讶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多