Ограничение, к чему может получить доступ плагин .NET

У меня есть веб-приложение, которое может загрузить плагины посредством отражения. Это в настоящее время использует Assembly.LoadFrom() и Activator.CreateInstance() сделать это. Прямо сейчас плагины загружаются в тот же AppDomain и имеют доступ к чему-либо в моем приложении и чем-либо, к чему мое приложение могло получить доступ.

То, что я ищу, является способом ограничить, к каким классам и методам плагин может получить доступ в целях безопасности. Я хочу иметь все свои классы, и методы выдают исключение при вызове, если они не добавлены в белый список. Я добавил бы в белый список в основном все функции в классе API и нескольких объектах передачи данных.

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

У кого-либо там есть какие-либо хорошие идеи или ресурсы? Это - что-то, что могло быть сделано с Безопасностью доступа к коду или новыми функциями Security-Transparent Code в .net 4?

7
задан David Hogue 14 April 2010 в 23:33
поделиться

1 ответ

Использование отдельного домена приложения - правильный подход, если вы хотите применить общие ограничения доступа. Что касается ограничения доступа к логике вашего приложения, просто не выдавайте экземпляры «внутренних» сервисных объектов вашего приложения объектам плагина. Кроме того, любые объекты ссылочного типа, которые не являются MarshalByRef, не будут пересекать границы AppDomain, поэтому эти объекты защищены от доступа, даже если есть открытые методы, которые попытаются их вернуть.

3
ответ дан 7 December 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: