Запросы разрешений

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

  • запрашивать минимальные разрешения, необходимые коду для выполнения;

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

В следующем примере кода демонстрируется простейший запрос разрешений.

<assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum, Write := "C:\test.tmp"), _
assembly: PermissionSet(SecurityAction.RequestOptional, Unrestricted := False)>  
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum, Write="C:\\test.tmp")]
[assembly:PermissionSet(SecurityAction.RequestOptional,Unrestricted=false)]

В данном примере системе безопасности .NET Framework сообщается, что код не должен быть запущен до тех пор, пока он не получит разрешение на запись в файл C:\\test.tmp. Если код сталкивается с политикой безопасности, которая не предоставляет такое разрешение, генерируется исключение PolicyException, а код не выполняется. Используя такой запрос, можно быть уверенным, что код будет выполняться только в случае получения требуемого разрешения, и не надо будет заботиться об ошибках, вызванных недостаточными разрешениями.

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

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

См. также

Основные понятия

Правила написания безопасного кода