Можно ли ограничить или ограничить объем кода C #, который может быть выполнен из DLL? - PullRequest
4 голосов
/ 15 января 2012

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

Есть ли способы, которыми вы можете запустить фрагмент кода, но, скажем, заблокировать любое использование System.Threading или любое использование System.IO?

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

Я гуглил, но я либо смотрю не в том месте, либо задаю не тот вопрос. Однако я знаю, что вы, люди, переполняющие стеки, - гении. Есть идеи?

Спасибо, и любой ответ будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Код доступа безопасности может быть то, что вы ищете.

0 голосов
/ 15 января 2012

Вместо того, чтобы просматривать код и удалять все отдельные ссылки, почему бы просто не ограничить ссылки на проекты? Кроме того, вы можете использовать разрешения .NET в системе, используя оснастку конфигурации .NET Framework для управления доступом к GAC, приложениям домена и т. Д. На основе различных параметров. (start> run> mscorcfg.msc, чтобы запустить его) Я не знаю, что новый вариант 4.0, однако, чтобы заменить эту утилиту конфигурации. РЕДАКТИРОВАТЬ: Чтобы сделать еще один шаг вперед, вы можете, например, запустить введенный код с учетной записью пользователя службы и ограничить доступ к коду этого пользователя с помощью этой утилиты.

...