Как да осигурим изолация?

Трябва да позволя на моите потребители да изпълняват .NET кода, който предоставят на моя сървър. Знам, че сигурността е голяма грижа, но трябва да се направи по този начин.

В момента изпълнявам кода на моите потребители под ограничен акаунт в Windows. Но се притеснявам, че .NET framework предоставя много класове, които, ако се използват злонамерено, могат да навредят на сървъра -- класовете под пространството на имената Reflection са един пример, CodeDom е друг проблем.

Иска ми се да има начин да се създаде "лека виртуална среда", която може да изпълнява .NET код, но е напълно изолирана. Нещо като Virtual PC, но много по-лек -- единствената възможност би била, че потребителите могат да правят изчисления и евентуално да извикват уеб услуга на трета страна.

Има ли нещо на пазара, което предоставя изолирана среда за .NET приложения?

Благодаря.


person user1044169    schedule 20.03.2012    source източник
comment
Това не дава директен отговор на въпроса, но може да обмислите използването на Mono на Linux. Не осигурява перфектна .NET функционалност, но може да помогне за предотвратяване на увреждане на сървъра. mono-project.com/Main_Page   -  person viking    schedule 21.03.2012
comment
Какъв вид код е и какво прави? Winform приложение, DLL плъгин, зареден от вашето приложение, ASP.NET страница? Това ще повлияе на избора на изолация, която можете да използвате.   -  person Scott Chamberlain    schedule 21.03.2012


Отговори (1)


.NET има вградени функции за сигурност, за да правите точно това, което искате да правите . Без да знам как се стартират техните .NET приложения, не мога да кажа със сигурност дали ще ви помогне, но ако контролирате стартирането на приложенията, можете да прилага контекст на сигурност към техния AppDomain и ограничава до какво имат достъп. Според това, което казахте в първоначалната публикация, ако сте блокирали почти всичко освен WebPermission (и дори можете да го ограничите до конкретни адреси ) трябва да е безопасно да работи на вашата система.

person Scott Chamberlain    schedule 20.03.2012