Herhangi bir izin olmadan yeni bir Uygulama etki alanına bir derleme yüklediğim küçük bir örnek oluşturdum. Bu iyi çalışıyor, derleme dosya sistemine erişemiyor ve yuvaları dinleyemiyor.AppDomain uygulamasında iş parçacığı oluşumunu engelle
Önlemek istediğim başka bir şey var: Konu oluşturma. Niye ya? Teorik olarak, bu montaj bile daha fazla iş parçacığı oluşturan ve belleğimi akıtan bir iş parçacığı oluşturabilir.
(Bence) en iyi şekilde düşündüm: Bir AppDomain belleğinin sınırlanması. Mümkün mü? Ve değilse, iş parçacığı oluşumunu önlemek için ne yapabilirim?
(Tamam, ben yüklemek istediğiniz klasöre dosya sistemine erişim verdi iplik
Thread t = new Thread(this.DoWork);
t.Start();
Ve 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);
için bu kodu oluşturmak için bu kodu kullanılmış montaj, bu sadece StrongName fullTrustAssembly = typeof(SecureInstance).Assembly.Evidence.GetHostEvidence<StrongName>();
çünkü benim için de işe yaramaz olduğunu
Umut s/o yardımcı olabilir. (:.
Bunu yapmanın hiçbir yolu yok AFAIK :) Yapabileceğin tek şey, her bir AppDomain'in en az bir iş parçacığı oluşturmak için – Elastep
AFAIK bir iş parçacığı havuzundaki iş parçacığı sınırını ayarlamaktır. Dolayısıyla, iş parçacığı oluşturmayı devre dışı bırakmak, tüm IMHO'da çalışamayacağı anlamına gelir. Neyi başarmaya çalışıyorsun? – Yahia
@Elastep Cevabınız için teşekkürler, ancak bu güvenli mi? İplik sınırını herhangi bir yazılım parçasında genişletmenin mümkün olduğunu düşünüyorum. Her şey Java'ya büyük bir artı verir. Java'da, iş parçacığı oluşturmadan önce SecurityManager sorulur. –