Может ли кто-то объяснить уровни доверия ASP.NET для меня?

Я слышал много о уровнях доверия, если бы люди пытались объяснить это мне, но я все еще не могу дать сценарий, в котором я бы применил один уровень доверия над другим.

Я прочитал статью

Ответ 1

Эта статья может объяснить это намного лучше, чем техническая, которую вы читали.

Вот лучшая его часть:

Среднее доверительное заключение

Основные ограничения, установленные на среде веб-приложения доверия:

  • OleDbPermission недоступен. Это означает, что вы не можете использовать данные ADO.NET, управляемые OLE DB провайдера для доступа к базам данных. Однако, вы можете использовать управляемый SQL Server провайдер для доступа к SQL Server базы данных.

  • EventLogPermission недоступен. Это означает, что вы не можете доступ к журналу событий Windows.

  • ReflectionPermission недоступен. Это означает, что вы не можете использовать отражение.

  • RegistryPermission недоступен. Это означает, что вы не можете доступ к реестру.

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

  • FileIOPermission ограничен. Это означает, что вы можете получить доступ только к файлам в вашем приложении виртуальный иерархии каталогов. Ваше приложение предоставляется чтение, запись, добавление и Разрешения PathDiscovery для вашего виртуальный каталог приложения иерархия.

  • Вам также запрещено звонить неуправляемый код или использование Enterprise Services.

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

Ответ 2

Хотя я не эксперт, я бы назвал один из наиболее распространенных примеров доверия, если вы купили хостинг через общего хостера через какого-то поставщика за 10 долларов в месяц, где у вас нет прямого доступа к машине, но получите выделенное место для хранения. В этом случае вы обычно получаете среднее доверие, потому что хостер хочет ограничить то, что вы можете сделать (убедитесь, что вы не можете удалить или изменить то, что не должно быть) и не иметь доступа к определенным ресурсам (например, попытаться прочитайте файл за пределами папки, на которую у вас есть разрешение) и другие задачи.

У нас есть полный доступ к нашей машине, где мы размещаем сайт, и мы полностью доверяем ему, это не проблема для нас, поскольку он посвящен нашему веб-сайту, а не общему ресурсу.

Ответ 3

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

Я лично видел, как Crystal Reports и инструмент преобразования HTML в PDF выходят из строя под Medium Trust. FileIOPermission требуется для папки Temp за пределами виртуального каталога ваших приложений. Я также видел проблемы с подключением TCP Socket, заблокированными из-за определенных уровней доверия.

У меня на самом деле была довольно неприятная ситуация с веб-приложением в прошлом году, когда для обеспечения безопасности требовался Medium Trust, но так писал в журнале событий!

К счастью, вы можете перезаписать уровни доверия в файле machine.config на сервере (если у вас есть к нему доступ) или ваш web.config, если ваш сервер настроен так, чтобы он мог перезаписать файл machine.config.

Выполнение такого рода поражений цели фиксированных уровней доверия, хотя...