我有一个多租户应用程序,可以根据需要运行任意工作流程。
我计划使用工作流设计器来创建这些工作流,但即使我限制工具箱中的活动,这也不能阻止恶意用户编辑自己的XAML文件,做一些我不想做的活动(特别呼吁.NET框架)
对于给定的工作流程,如何验证所使用的唯一操作是我赞同的? XPath查询是唯一的方法,还是WF中有一个功能可以验证这个?
答案 0 :(得分:1)
您所能做的就是将XAML作为XML加载并检查其中的内容。并确保检查输入的任何VB表达式,因为用户也可以在其中放置有趣的东西。
答案 1 :(得分:1)
我只是在sandboxed AppDomain中加载工作流程。您可以使用SecurityManager的GetStandardSandbox静态方法相对容易(并且安全地)设置它。
当然,我还没有完成这个,但我肯定会考虑将其中的一部分添加到我当前的WF代码中(它确实使用AppDomains来隔离我的工作流程的执行情况)应用程序)。