Обеспечение безопасности веб-узлов с новой моделью безопасности кода

В настоящее время я работаю над проектом, в котором мы создаем MVC site. Сайту необходимо использовать защиту доступа к коду из-за того, что необходимо подключить стороннюю DLL для обеспечения пользовательских функций. Теперь мы не хотим, чтобы эти сборки имели полное доверие и, следовательно, использовали новую модель безопасности в .NET 4.0

Из-за этих требований мы сильно назовем все наши собственные сборки и устанавливаем их в gac. Некоторые из этих сборок - SecurityTransparent, смешанные с типами и членами SecuritySafeCritical и SecurityCritical.

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

У меня теперь есть эта проблема с файлом Global.asax, который наследуется от класса, находящегося в сборке, помеченной атрибутом AllowPartiallyTrustedCallers.

Этот класс, в свою очередь, наследует от HttpApplication.

В моем web.config уровень доверия в настоящее время установлен на Высокий.

Я получаю следующую ошибку:

Правила безопасности наследования, нарушенные по типу: "ASP.global_asax". Производные типы должны либо соответствовать доступности безопасности базы тип или быть менее доступным

Я предполагаю, что из-за правил наследования при использовании модели безопасности и что класс HttpApplication должен иметь более строгие правила, чем SecurityTransparent.

Я попытался маркировать свой собственный класс атрибутом SecuritySafeCritical, но не повезло.

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

Ответ 1

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