Я видел сторонний код, который делает это;например, Jint позволяет вам писать сценарии JavaScript, которые манипулируют объектами CLR, но предотвращает доступ к файловым системам, отраженным и т. д. кодам 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();
}
Многое из того, что я прочитал, говорит о том, что вам нужно создать изолированную Appdomain (что-тоУ меня никогда не было большого успеха), но подход Джинта, кажется, работает довольно хорошо.Возможно, вам придется остерегаться стороннего кода, перехватывающего статические события, которые будут запускаться позже - тогда они могут выйти за рамки PermitOnly
.