c# - 如何防止访问本地文件系统

标签 c# security acl

我的 (C#) 应用程序可以加载外部 DLL(不是我编写的)并从这些库中执行代码。库可以是 C# 或 CPP。

我需要确保此外部代码不会访问本地文件系统中的任何文件(读取和写入),特定文件夹除外。

我该怎么做?

最佳答案

我见过执行此操作的第三方代码;例如,Jint允许您编写操纵 CLR 对象的 JavaScript 脚本,但它会阻止任何源自 JavaScript 的代码路径通过使用权限访问文件系统、反射等。

您可以阅读 Jint 的文档并查看其源代码以获取更多详细信息,但其本质似乎是这样的:

PermissionSet myPermissionSet = new PermissionSet(PermissionState.None);
// or some other permission set, depending on your requirements

try {
    myPermissionSet.PermitOnly();
    // run untrusted code
} finally {
    CodeAccessSecurity.RevertPermitOnly();
}

我读过的很多东西都说你需要创建一个沙盒应用程序域(我从来没有成功过),但 Jint 的方法似乎工作得很好。不过,您可能需要注意稍后会触发的第三方代码 Hook 静态事件——然后它们可能会逃脱 PermitOnly 范围。

关于c# - 如何防止访问本地文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8590972/

相关文章:

c# - 在访问器 C# 中调用方法

spring - Spring ACL 表中的 ace_order 列是什么?

api - OAuth2流程理解

docker - 在 docker alpine 镜像上启用 acl

C# - Windows ACL - 应用继承权限

c# - GDI+ 就像在 WPF 中绘图一样

c# - 基于现有列向数据表添加新列的最佳方法

c# - HttpClientHandler/HttpClient 内存泄漏

java - 在 Android 中查看证书的详细信息

javascript - 窃取 CSRF token