作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想编写一个 MVC 应用程序,允许我们开发组中的某个人上传 .NET 程序集,然后我想反射(reflect) .dll 以从中收集信息。我想安全地做这件事。从来没有在“沙箱”中加载这样的程序集。正确的做法是什么?
最佳答案
如果您只想检查元数据,那么您可以使用 Assembly.ReflectionOnlyLoadFrom
.使用此 API 加载程序集会加载程序集,但其中的代码均不可执行:
You cannot execute code from an assembly that has been loaded into the reflection-only context. To execute the code, load the assembly with the LoadFile method.
如果您需要能够卸载程序集,您可能希望在新的 AppDomain 中执行此操作。无法卸载程序集,但可以卸载包含它们的 AppDomain。
如果您需要执行一些代码,但又想确保库不会做任何坏事,您可以加载一个新的 AppDomain 并使用代码权限来限制 AppDomain。 This CodeProject Article给出了一个很好的操作步骤。
关于c# - 对 .NET 程序集进行沙盒化 - 上传 DLL,然后进行反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14281981/
我是一名优秀的程序员,十分优秀!