2009-09-11 4 views
0

Представьте ненадежное приложение (плагин), которое считывает со стандартного ввода и записывает на стандартный вывод.Как обернуть ненадежное приложение?

Как получить выход, возвращенный для указанного ввода этим приложением , предотвращающий любые побочные эффекты?

Например, если приложение удаляет файл на диске, оно должно быть обнаружено, и эта попытка должна быть отменена.

Это своего рода обертка приложение. Можно ли его построить?

Сложная задача слишком интересная: сделайте эту оболочку с помощью .NET (как хост, так и клиент написаны на языке .NET).

+0

Вы изучали использование доменов приложений с ограниченной безопасностью. –

ответ

5

Самый безопасный способ - загрузить этот плагин в separate AppDomain, который вы настраиваете с помощью security evidence for the requirements you have.

Когда вы создаете AppDomain, вы можете точно указать, какие коды кода могут делать в этой песочнице. Код, который работает там, ограничен ограничениями, которые вы установили. Но этот процесс может сбивать с толку в первый раз, когда вы это делаете, и может по-прежнему оставлять вас уязвимыми.

Использование AppDomains для изоляции сборок - интересный процесс. Вы думаете, что загружаете свои плагины в другой AppDomain, а затем используете их через прокси в AppDomain, но наоборот. Им нужно использовать ваши прокси в AppDomain. Если вы не понимаете и делаете это правильно, вы в конечном итоге загрузите свой код плагина в свой основной AppDomain и выполните его там, а не в ограниченном домене. Есть много ошибок, которые вы получите немного (подписка на события имеет некоторые интересные побочные эффекты), если вы не делаете что-то правильно.

Я бы предложил прототипирование, раскрась в главе AppDomain на CLR Via C# и прочитал как можно больше о предмете.


Вот тестовое приложение, которое я сделал для расследования событий, связанных с перекрестными доменами.
http://cid-f8be9de57b85cc35.skydrive.live.com/self.aspx/Public/appdomainevents.rar