Сведения о вопросе

Codeliver

01:23, 15th August, 2020

Теги

Тестирование кода .NET в средах частичного доверия

Просмотров: 472   Ответов: 5

Я хочу проверить поведение определенного фрагмента кода .NET в среде частичного доверия. Каков самый быстрый способ настроить это? Не стесняйтесь предположить, что я (и другие читатели) всего CAS нуб.

@Nick: Спасибо за ответ. Увы, рассматриваемый инструмент явно предназначен для неуправляемого кода. Я не сказал "managed" в своем вопросе и не должен был предполагать, что люди будут выводить его из тега ".NET".



  Сведения об ответе

DINO

12:49, 4th August, 2020

Функциональность, которую вы ищете, встроена в visual studio :

На вкладке Безопасность вашего проекта есть значок " дополнительно ..."кнопка, которая позволяет настроить, хотите ли вы выполнять отладку с полным доверием или на заданном уровне доверия.


  Сведения об ответе

COOL

18:13, 28th August, 2020

Это отличный вопрос, особенно с точки зрения TDD и проверки кода при различных сценариях доверия.

Я думаю, что то, как я бы подошел к этому, было бы чем-то вроде -

  • Создайте AppDomain в моем коде TDD, используя перегрузку AppDomain.CreateDomain(), которая позволяет вам передать PermissionSet. PermissionSet будет сконструирован в соответствии с различными сценариями доверия, которые вы хотите протестировать.

  • Загрузите тестируемую логику assembly в домен приложения

  • Создание экземпляров типов / методов вызова и т.д. в домене приложения, ловушка исключений безопасности

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


  Сведения об ответе

ASSembler

22:44, 25th August, 2020

Используйте средство проверки приложений Microsoft.

AppVerifier помогает определить:

  • Когда приложение использует APIs правильно: (Небезопасно TerminateThread APIs., Правильное использование локального хранилища потоков (TLS) APIs., o правильное использование манипуляций с виртуальным пространством (например, VirtualAlloc, MapViewOfFile).
  • Скрывает ли приложение нарушения доступа с помощью структурированной обработки исключений.
  • Пытается ли приложение использовать недопустимые дескрипторы.
  • Есть ли повреждения памяти или проблемы в куче.
  • Работает ли приложение без памяти при низком уровне ресурсов.
  • Происходит ли правильное использование критических разделов.
  • Будет ли приложение, запущенное в административной среде, хорошо работать в среде с меньшими привилегиями.
  • Есть ли потенциальные проблемы, когда приложение работает от имени ограниченного пользователя.
  • Существуют ли неинициализированные переменные в будущих вызовах функций в контексте потока.


  Сведения об ответе

COOL

18:32, 11th August, 2020

Вы должны посмотреть на инструмент настройки .NET Framework. Он находится в .NET SDK, и вы можете найти инструкции по его запуску здесь... http://msdn.microsoft.com/en-us/library/2bc0cxhc.aspx

В разделе Политика безопасности среды выполнения вы найдете 3 уровня политики: корпоративный, машинный и пользовательский. Если вы детализируете компьютер или пользователя, вы найдете определения групп кода и наборов разрешений . Когда вы говорите, что хотите протестировать некоторый код .NET в среде частичного доверия, я предполагаю, что вы захотите протестировать против одного из стандартных наборов разрешений, уже определенных, таких как интернет . Необходимо определить группу кода , соответствующую вашему приложению (или определенным сборкам), и назначить выбранный набор разрешений этой группе кода .

Вы также можете определить свои собственные пользовательские наборы разрешений , но давайте пока оставим это простым.

Выберите, хотите ли вы, чтобы ваша новая группа кода существовала на уровне компьютера или только для вашей учетной записи пользователя, и детализируйте уровень политики компьютера или пользователя соответственно. Вы увидите кодовую группу под названием _All _ Code_ . Создайте дочернюю группу кода внутри этой группы, щелкнув правой кнопкой мыши и выбрав создать...

Дайте ему имя, скажем PartialTrustGroup , а затем нажмите кнопку Далее .

Вы должны указать условие членства для этой группы, и существуют различные типы. Мне нравится создавать на своем компьютере определенную папку с именем PartialTrust , а затем создавать соответствующее условие членства URL. Итак, мой URL выглядит так... file://c:/users/martin/documents/partialtrust/*

* - Это подстановочный знак, чтобы поймать любой assembly ниже этого пути. нажимать далее .

Теперь вы можете выбрать набор разрешений для своей новой группы кода. А пока выбери интернет . Это довольно ограничительный набор, похожий на песочницу Java applet. Нажмите кнопку Далее и готово .

Теперь щелкните правой кнопкой мыши на новой группе кода и выберите пункт Свойства. На вкладке Общие убедитесь, что выбран самый верхний checkbox, а затем щелкните OK.

Теперь к любым сборкам .NET, загруженным из расположения ниже указанного вами URL, будет применен набор разрешений Интернета . Ожидайте получить некоторые SecurityExceptions, если вы не написали свой код, чтобы тщательно соблюдать сокращенный набор разрешений.

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


  Сведения об ответе

prince

09:49, 21st August, 2020

Я только что опубликовал статью под названием частичное тестирование доверия с xUnit.net в своем блоге. В нем подробно описана платформа xUnit.net-based, которую мы используем в команде Entity Framework для выполнения кода под средним доверием.

Вот пример его использования.

public class SomeTests : MarshalByRefObject
{
    [PartialTrustFact]
    public void Partial_trust_test1()
    {
        // Runs in medium trust
    }
}

// Or...

[PartialTrustFixture]
public class MoreTests : MarshalByRefObject
{
    [Fact]
    public void Another_partial_trust_test()
    {
        // Runs in medium trust
    }
}


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться