Безопасные плагины

nik93

Прошу ткунуть ссылкой или советом по следующей теме:
Хочу чтобы в моем приложении была реализованна БЕЗОПАСНАЯ система плагинов.
Под безопасной понимается то, что плагин, написанный сторонним разработчиком, не должен быть способен каким-либо образом навредить программе или пользователю (Найти все пароли, стереть все документы, накачать троянов)
Пишу на C#, вобщем-то плагины у меня уже работают (пользовался данной технологией http://www.cyberguru.ru/dotnet/reflection/dotnet-reflection...., но меня смущает, что в плагин можно засунуть код которому будет позволено делать все что захочется.
Есть ли еще какие-нибудь подходы?

procenkotanya

NaCl

yroslavasako

Самый очевидный подход - rhino для java с возможностью полного определения окружения

agaaaa

NET 4:
var evidence = new Evidence;
evidence.AddHostEvidence(new Zone(SecurityZone.Internet;
var permissions = SecurityManager.GetStandardSandbox(evidence);

var fileperm = new FileIOPermission(FileIOPermissionAccess.PathDiscovery | FileIOPermissionAccess.Read, full_path_to_plugin_assembly);
permissions.Add(fileperm);

var setup = new AppDomainSetup;
setup.PrivateBinPath = Path.GetDirectory(full_path_to_plugin_assembly);
setup.ApplicationBase = some_path;

var sandbox = AppDomain.Create("plugin sandbox", null, setup, permissions);
return (IPluginInterface)sanbox.CreateInstanceFromAndUnwrap(plugin_assembly_name, plugin_type_name);

Возможно где-то намудрил. Сейчас сам занимаюсь sandbox'ингом, обращайся если что.
На моно эта защита работать не будет - они так и не сделали Code Access Security.
Для того, чтобы найти plugin_type_name, загрузи сборку плагина в основной AppDomain только для рефлексии (Assembly.ReflectionOnlyLoadFrom).

apl13

Встрой туда интерпретатор скриптового языка в виде совсем виртуальной машины.

yroslavasako

ну мой совет встроить яваскрипт народ не оценил

nik93

Встрой туда интерпретатор скриптового языка в виде совсем виртуальной машины.
я думал об этом, но ни разу подобного не делал, даже не знаю с какой стороны подойти.

Helga87

ну мой совет встроить яваскрипт народ не оценил
в то время как хороший совет же!

kokoc88

в то время как хороший совет же!
Встраивать Rhino для Java в .NET? Может быть, application domains всё-таки лучше?

apl13

ну мой совет встроить яваскрипт народ не оценил
И правильно! Потому что надо встраивать интерпретатор Схемы. :bud:

karkar

Встраивать Rhino для Java в .NET?

Есть JINT.

serega1604

>И правильно! Потому что надо встраивать интерпретатор Схемы. :bud:
есть же вроде clojure?
Оставить комментарий
Имя или ник:
Комментарий: