Я создал небольшой пример, в котором я загружал сборку в новый домен приложения без каких-либо разрешений. Это работает нормально, сборка не может получить доступ к файловой системе и не может прослушивать сокеты.
Но есть еще одна вещь, которую я хочу предотвратить: создание потоков.Почему? Потому что теоретически эта сборка может создать поток, который создает еще больше потоков и наводняет мою память.
Я придумал (на мой взгляд) лучший способ: ограничить память AppDomain. Это возможно? А если нет, что я могу сделать, чтобы избежать создания потока?
Использовал этот код для создания потока
Thread t = new Thread(this.DoWork);
t.Start();
И этот код для AppDomain
PermissionSet set = new PermissionSet(PermissionState.None);
set.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
set.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read |
FileIOPermissionAccess.PathDiscovery,
this.path));
AppDomainSetup info = new AppDomainSetup { ApplicationBase = this.path };
this.domain = AppDomain.CreateDomain("Sandbox", null, info, set, null);
(Хорошо, я дал доступ к файловой системе в папке, где я хочу загрузить сборку, потому что StrongName fullTrustAssembly = typeof (SecureInstance) .Assembly.Evidence.GetHostEvidence
у меня тоже не работает.
Hope s / o может помочь. (: