gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:01:54 24 4
gpt4 key购买 nike

我的 (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com