Защита сборок веб-сайтов с помощью новой модели безопасности кода - PullRequest
12 голосов
/ 19 октября 2011

Я сейчас нахожусь в проекте, где мы создаем 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 Ответ

1 голос
/ 01 ноября 2011

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

...