我需要允许一些用户上传一些将在服务器上运行的插件dll(基于asp.net核心)作为一些自定义脚本(我不想使用javascript或任何其他语言来限制api可访问性)。 如何防止用户访问.net API(如System.IO)以避免服务器上的潜在安全问题?
答案 0 :(得分:1)
.NET Core不提供任何代码沙盒,隔离,代码安全功能,例如.NET Framework的早期版本如何使用AppDomains和信任设置。发现这些功能不安全,并且从开始就从.NET Core中省略。
但是,如果您仍想从外部源运行代码(不管是否为.NET Core),还有几个选项。
创建自己的DSL。这就是Salesforce与Apex所做的事情。如果该语言为您的开发人员提供他们所需的一切并限制他们可以做的事情,那么这是一个可靠的选择JavaScript是一个很好的选择,因为你可以定义如果你使用.NET JavaScript解释器可以在.NET端调用什么,你就不必重新发明轮子。 Node.js可以工作,但你会遇到它有一个丰富的API来访问“外部世界”
使用Docker。 Docker容器确实是孤立的,未经您的许可不能直接触及外界。这是.NET示例运行的方式。除非您允许,否则它们不会对主机造成损害。
无论何时,只要您将代码加载到流程中,您就可以为他们打开大门,让他们可以执行您的流程可以执行的任何操作。