C#中动态调用的限制功能

Joh*_*nik 3 c# reflection

我创建了一些实用程序代码,允许我将文本输入到我们的内容管理系统中,并使用类似于的方法动态编译和调用它.

但是这会带来安全风险 - 因为内容作者可能会错误地(或者更糟糕地 - 恶意地)输入代码,这些代码可能会超出我想要的范围.有关保持此功能开放的任何建议,但能够阻止编写某些类型的代码吗?例如,有明显的限制,如写入文件系统.

我最初的想法是排除某些集会,但我很好奇是否有人对此有任何聪明的想法.

nma*_*mat 6

不要这样做.用户可以编写的内容有无限可能,您将无法阻止它们.在安全性方面,您应该始终指定用户可以执行的操作而不是他不能执行的操作(白名单而不是黑名单),因为如果您这样做,您将会遗漏某些内容.

在这种特定情况下,允许用户编写任意代码似乎永远不是一个好主意.相反,您应该选择用户可以执行的特定操作,并为每个操作添加按钮/控件.