如何允许DLL仅在DLL所在的目录中创建/读取/更新/删除文件
本文关键字:DLL 创建 读取 删除 文件 更新 仅在 何允许 | 更新日期: 2023-09-27 18:00:38
我有几个文件夹,每个文件夹都包含一些.DLL文件。DLL 可以执行,我必须禁止此 DLL 在其自己的文件夹之外执行 CRUD 操作。
但是 DLL 可以执行它需要的任何保存操作,只要它位于 DLL 所在的同一文件夹中即可。
例如:
此代码可以成功执行
public static void Create()
{
string path = Directory.GetCurrentDirectory() + "''file.txt";
File.Create(path);
}
//但是执行此代码我必须禁止
public static void Create()
{
File.Create("../file.txt");
}
.
NET 内置了安全功能,可以执行您想要执行的操作。您需要做的是将安全上下文应用于 DLL 的应用程序域,并限制它可以访问的内容。
要做你想做的事情,我最感兴趣的可能设置是FileIOPermission
.它将允许您将 DLL 的访问限制为仅加载 DLL 的文件夹。如果您有多个 DLL,则可能需要创建多个 AppDomain 或允许所有 DLL 访问彼此的文件夹(但不能访问系统上的其他任何位置(。
如果可以修改 DLL,使其不再需要写入自己的文件夹,则可以通过要求它们读取和写入独立存储来使您自己更轻松,那么 DLL 从何处加载并不重要,以防万一与 DLL 在同一文件夹中有其他敏感文件。
要考虑的一件事是,最好根本不给DLL任何权限,只授予它您想要做的事情,因为它可能还有其他事情可以用来绕过你的限制。例如:FileIOPermission
如果他们在窗口中 P''Invo 对 FileOpen
API 的调用而不是通过 .NET 的Stream
对象。