Прочитать на английском

Поделиться через


SecurityAction Перечисление

Определение

Внимание!

Code Access Security is not supported or honored by the runtime.

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

C#
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum SecurityAction
C#
public enum SecurityAction
C#
[System.Serializable]
public enum SecurityAction
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum SecurityAction
Наследование
SecurityAction
Атрибуты

Поля

Имя Значение Описание
Assert 3

Вызывающий код может получить доступ к ресурсу, определяемому текущим объектом разрешения, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу (см. раздел Использование метода Assert).

Demand 2

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

Deny 4

Вызывающим объектам запрещен доступ к ресурсу (определяется текущим объектом разрешения), даже если им предоставлено разрешение на доступ к этому ресурсу (см. раздел об использовании метода Deny).

InheritanceDemand 7

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

LinkDemand 6

Указанное разрешение необходимо предоставить непосредственно вызывающему объекту. Не используйте в .NET Framework 4. Для полного доверия используйте вместо него SecurityCriticalAttribute; для частичного доверия используйте Demand.

PermitOnly 5

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

RequestMinimum 8

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

RequestOptional 9

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

RequestRefuse 10

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

Примеры

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

C#
using System;
using System.Security.Permissions;
using System.IO.IsolatedStorage;
using System.IO;

// Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
// This restricts the called methods to working only with storage files that are isolated
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser)]
public sealed class App
{
    static void Main()
    {
        WriteIsolatedStorage();
    }
    private static void WriteIsolatedStorage()
    {
        // Attempt to create a storage file that is isolated by user and assembly.
        // IsolatedStorageFilePermission granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this statement.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly()))
        {

            // Write some data out to the isolated file.
            using (StreamWriter sw = new StreamWriter(s))
            {
                sw.Write("This is some test data.");
            }
        }

        // Attempt to open the file that was previously created.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
        {
            // Read the data from the file and display it.
            using (StreamReader sr = new StreamReader(s))
            {
                Console.WriteLine(sr.ReadLine());
            }
        }
    }
}

// This code produces the following output.
//
//  Some test data.

Комментарии

Внимание!

Безопасность доступа к коду (CAS) является устаревшей во всех версиях .NET Framework и .NET. В последних версиях .NET заметки CAS не учитываются и при использовании API, связанных с CAS, возникают ошибки. Разработчикам следует искать альтернативные способы выполнения задач безопасности.

В следующей таблице описывается время выполнения каждого действия по обеспечению безопасности и поддерживаемые им целевые объекты.

Важно!

В .NET Framework 4 поддержка среды выполнения была удалена для применения запросов разрешений Deny, RequestMinimum, RequestOptional и RequestRefuse. Эти запросы не следует использовать в коде, основанном на .NET Framework 4 или более поздней версии. Дополнительные сведения об этих и других изменениях см. в разделе Изменения системы безопасности.

Не следует использовать LinkDemand в .NET Framework 4. Вместо этого используйте SecurityCriticalAttribute , чтобы ограничить использование полностью доверенными приложениями, или использовать для Demand ограничения частично доверенных вызывающих объектов.

Заявление о действиях по обеспечению безопасности Время действия Поддерживаемые целевые объекты
LinkDemand (не используйте в .NET Framework 4) JIT-компиляция Класс, метод
InheritanceDemand Время загрузки Класс, метод
Demand Во время выполнения Класс, метод
Assert Во время выполнения Класс, метод
Deny (устаревшее в .NET Framework 4) Во время выполнения Класс, метод
PermitOnly Во время выполнения Класс, метод
RequestMinimum (устаревшее в .NET Framework 4) Время предоставления Сборка
RequestOptional (устаревшее в .NET Framework 4) Время предоставления Сборка
RequestRefuse (устаревшее в .NET Framework 4) Время предоставления Сборка

Дополнительные сведения о целевых объектах атрибутов см. в разделе Attribute.

Применяется к