【问题标题】:How do I sanitize a workflow uploaded by a user?如何清理用户上传的工作流?
【发布时间】:2011-08-09 19:45:01
【问题描述】:

我有一个多租户应用程序,可以根据需要运行任意工作流。

我计划使用工作流设计器来创建这些工作流,但即使我限制了工具箱中的活动,这也不会阻止恶意用户编辑他自己的 XAML 文件,执行我不希望他们进行的活动(专门调用 .NET 框架)

对于给定的工作流程,我如何验证正在使用的唯一操作是我批准的操作? XPath 查询是唯一的方法,还是 WF 中的某个功能可以验证这一点?

如果您需要对我正在寻找的内容进行可视化介绍,here 是一个示例项目,video 指的是它。

【问题讨论】:

    标签: xpath workflow-foundation workflow-foundation-4 multi-tenant


    【解决方案1】:

    我只是在sandboxed AppDomain 中加载工作流。您可以使用 SecurityManager 的 GetStandardSandbox 静态方法相对轻松(且安全)地进行设置。

    当然,我还没有真正完成这件事,但我肯定会考虑将其中的一些添加到我当前的 WF 代码中(它确实使用 AppDomains 将工作流的执行与我的应用程序)。

    【讨论】:

      【解决方案2】:

      您所能做的就是将 XAML 加载为 XML 并检查其中的内容。并确保检查输入的任何 VB 表达式,因为用户也可以在其中放入有趣的东西。

      【讨论】:

      • 谢谢;从 XML 中提取时,您对如何检查 VB 表达式有任何提示吗?我不是 VB 人,所以在语法安全方面我有一个陡峭的曲线
      • 我从来不需要解析它们,但 tgey 是 VisualBasicValue 并且 Expression 属性指向 AST。
      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2019-09-11
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多