Как я могу ограничить разрешения безопасности сборки, но не разрешения ее вызывающих? - PullRequest
1 голос
/ 15 ноября 2010

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

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

Я пытался вызвать securityPermissionObject.Deny () непосредственно перед запуском кода, но это блокирует методы на моих объектах от использования отражения (что некоторые делают), когда они вызываются кодом пользователя.

Есть ли способ ограничить разрешения только для подозрительной сборки, не затрагивая общедоступные методы, которые оназвонки на мои доверенные сборки?

Ответы [ 2 ]

1 голос
/ 07 января 2011

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

Здесь является примером.

Конечно, поскольку у вас есть два домена приложений, это немного усложняет общение.Вы можете рассмотреть Web-сервис через канал или другие механизмы связи.

Здесь - это статья о том, как два домена приложения могут взаимодействовать.

0 голосов
/ 07 января 2011

(старый вопрос, не уверен, нужен ли вам ответ)

Когда вызовы возвращаются в ваши общедоступные методы, первое, что вам нужно сделать, - это тщательно санировать параметры и отклонять любые неправильные вызовы. После этого вы можете добавить вызов к Assert для RelectionPermission . Это в основном позволяет любому вызываемому коду, который требует отражения, быть удовлетворенным, и не видеть Deny выше в стеке вызовов.

...