Я хотел бы разместить среду выполнения динамического языка (DLR) таким образом, чтобы пользователи, запускающие в ней произвольные сценарии, не могли остановить процесс?
В спецификации хостинга DLR описано, как разместить DLR в отдельном ApplicationDomain. Это позволяет разорвать и выгрузить среду выполнения скрипта и ограничить определенные операции через CAS (например, я могу ограничить доступ к файловой системе или запретить использование отражения).
Но есть ли также способы, например: - ограничить максимальный объем памяти, используемый сценарием? - ограничить количество потоков, создаваемых скриптом? - обнаруживать зависшие скрипты?
Я думаю, что такой мелкозернистый контроль может быть возможен с помощью неуправляемого API хостинга .net который был разработан для SQL сервера. Это направление? Существуют ли проекты с открытым исходным кодом для такой общей песочницы .net?
Вот несколько потенциально полезных ссылок, которые я нашел:
- Откройте для себя методы безопасного размещения ненадежных надстроек с помощью .NET Framework 2.0
- Тема Защита хоста в списке обсуждения DLR
- Использование защиты хоста (блог о безопасности .Net)