Предотвращение запуска ненадежным кодом C # новых тем ИЛИ API черного / белого списка - PullRequest
2 голосов
/ 01 апреля 2011

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

Хотя .NET Sandboxing в порядке, я не могу найти способ предотвратить запуск кода новыми потоками.

Это проблема, потому что AFAIK мы не можем перечислить и безопасно отменить их, чтобы выгрузить песочницу AppDomain - нам нужно выйти из всего процесса.

Как я могу запретить Thread.Start или (лучше) белый список/ черный список конкретных API CLR?

1 Ответ

3 голосов
/ 01 апреля 2011

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

http://msdn.microsoft.com/en-us/library/ms974577.aspx

http://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.html

http://www.codeproject.com/KB/library/Dotnet_Scriptor.aspx

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

Хороший пример использования AppDomain

Возможно, вы могли бы принудительно выгрузить AppDomain, если с процессором и памятью происходили «плохие вещи».

совсем недавно в .net 4 я заметил, но не исследовал разрешения HostProtection ...

System.Security.Permissions hostprotectionattribute

===РЕДАКТИРОВАТЬ ===

Похоже, что хостинг CLR с установленным разрешением безопасности будет путь.Ссылки ...

Что такое хостинг CLR?

http://msdn.microsoft.com/en-us/library/hbzz1a9a(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/h846e9b3(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission(v=vs.90).aspx

...