Почему веб-роль Azure по умолчанию выполняется с полным доверием?

StackOverflow https://stackoverflow.com/questions/2037747

  •  19-09-2019
  •  | 
  •  

Вопрос

Когда я создаю приложение Azure ASP.NET, по умолчанию.ЧИСТЫЙ уровень доверия равен полному доверию.Я всегда меняю его на частичное доверие Windows Azure, которое похоже на средний уровень доверия ASP.NET.

Вы можете сделать это либо с помощью графического интерфейса при выборе Свойств роли, либо установив для enableNativeCodeExecution значение false в файле определения (.csdef), как показано ниже:

<WebRole name="ServiceRuntimeWebsite" enableNativeCodeExecution="false">

Как разработчик, заботящийся о безопасности, я хочу по умолчанию запускать свое приложение в режиме частичного доверия, что обеспечивает более высокий уровень безопасности.Если мне нужно использовать что-то вроде Reflection или P / Invoke, как разработчик я хочу сам принять решение снизить этот уровень доверия.

Я уверен, что есть причина, по которой Microsoft решила использовать полное доверие по умолчанию.ЧИСТЫЙ уровень доверия, я просто не вижу его.Если вы знаете причину, или вам кажется, что вы ее знаете, пожалуйста, дайте мне знать.

Это было полезно?

Решение

Полное доверие требуется не только для P / Invoke for .Также для NET reflection.В итоге почти всем приложениям среднего размера требуется полное доверие, потому что почти все широко распространенные библиотеки тоже нуждаются в нем (например, NHibernate).На самом деле, я спрашивал у прямо противоположный вопрос на форумах Azure тоже.

Другие советы

Вопрос о полном или частичном доверии относится к среде, в которой выполняется ваше приложение.Чем больше у вас контроля и / или "владения" средой и сборками, тем более приемлемо иметь настройки полного доверия.

Например, если вы создаете веб-сайт Azure (возможность с июля 2012 года) и, имитируя wordpress или Umbraco, ваш веб-сайт позволяет загружать и устанавливать плагины произвольной сборки, тогда важно иметь среду с частичным доверием.Вполне возможно, что один из загруженных и запущенных плагинов, который вы не контролируете и которым не владеете, содержит вредоносное ПО.Это влияет не только на безопасность и стабильность вашего веб-сайта, но и на другие (многопользовательские) размещенные веб-сайты, которые не имеют никакого отношения к вашему.

Конечно, ваш веб-сайт будет полагаться на сторонние библиотеки, такие как Log4Net или StructureMap, но это чрезвычайно известные и проверенные библиотеки, влияние которых на безопасность не подвергается сомнению.Следовательно, если вы используете веб-роль Azure (гораздо менее "мультитенантный" тип) и вы просто запускаете такие "доверенные" сторонние приложения, то на самом деле нет проблемы с запуском в режиме полного доверия.

Да, к сожалению, по-прежнему очень сложно (если не невозможно) писать большие файлы .СЕТЕВЫЕ приложения, работающие с частичным доверием.

Нам нужны гораздо лучшие технологии и инструменты (например, CAS.NET)

Потому что Medium Trust теперь официально устарел.Если вы запускаете новый веб-проект в Visual Studio, он уже требует полного доверия (и не работает с частичным доверием).Microsoft говорит:Не полагайтесь на среднее доверие, вместо этого используйте полное доверие и изолируйте ненадежные приложения в отдельных пулах приложений.

Источники:

Ответ Stackoverflow:Цитируемый ответ ASP.NET команда

Майкрософт:ASP.NET Частичное доверие не гарантирует изоляцию приложения

Майкрософт:ASP.NET лучшие практики веб-разработки

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top