Можно ли разместить .Net DLR в «защищенной от идиота» песочнице? - PullRequest
8 голосов
/ 17 июля 2010

Я бы хотел разместить Dynamic Language Runtime (DLR) таким образом, чтобы пользователи, которые запускают в нем произвольные сценарии, не могли остановить процесс?

Спецификация DLR хостинга описываеткак разместить DLR в отдельном домене приложений.Это позволяет разорвать и выгрузить среду выполнения скрипта и ограничить определенные операции через CAS (например, я могу ограничить доступ к файловой системе или запретить использование отражения).

Но есть также способы, например: - ограничитьмаксимальный объем памяти, используемый скриптом?ограничить количество потоков, создаваемых скриптом?- Обнаружить заблокированные сценарии?

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

Вот несколько потенциально полезных ссылок, которые я нашел:

1 Ответ

3 голосов
/ 17 июля 2010

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

Насколько я помню, любой криттер, который тратит «размышления» более чем на 0.n секунд или n kb памяти, удаляется.

...