SecurityAction Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Achtung
Code Access Security is not supported or honored by the runtime.
Gibt die Sicherheitsaktionen an, die mit deklarativer Sicherheit ausgeführt werden können.
public enum class SecurityAction
[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
public enum SecurityAction
[System.Serializable]
public enum SecurityAction
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum SecurityAction
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type SecurityAction =
type SecurityAction =
[<System.Serializable>]
type SecurityAction =
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SecurityAction =
Public Enum SecurityAction
- Vererbung
- Attribute
Felder
Assert | 3 | Der aufrufende Code kann auf die durch das aktuelle Berechtigungsobjekt identifizierte Ressource zugreifen, selbst wenn Aufrufern einer höheren Ebene in der Aufrufliste keine Berechtigung für den Zugriff auf die Ressource erteilt wurde (siehe Verwenden der Assert-Methode). |
Demand | 2 | Allen Aufrufern einer höheren Ebene in der Aufrufliste muss die vom aktuellen Berechtigungsobjekt angegebene Berechtigung erteilt worden sein. |
Deny | 4 | Die Möglichkeit, auf die durch das aktuelle Berechtigungsobjekt angegebene Ressource zuzugreifen, wird Aufrufern auch dann verweigert, wenn ihnen die Berechtigung für den Zugriff erteilt wurde (siehe Verwenden der Deny-Methode). |
InheritanceDemand | 7 | Der abgeleiteten Klasse, die die Klasse erbt oder eine Methode überschreibt, muss die angegebene Berechtigung erteilt worden sein. |
LinkDemand | 6 | Dem unmittelbaren Aufrufer muss die angegebene Berechtigung erteilt worden sein. Verwenden Sie nicht in .NET Framework 4. Verwenden Sie stattdessen für volle Vertrauenswürdigkeit SecurityCriticalAttribute und für teilweise Vertrauenswürdigkeit Demand. |
PermitOnly | 5 | Nur auf die durch dieses Berechtigungsobjekt angegebenen Ressourcen kann zugegriffen werden, selbst wenn dem Code die Berechtigung für den Zugriff auf andere Ressourcen gewährt wurde. |
RequestMinimum | 8 | Die Anforderung der Mindestberechtigungen, die zum Ausführen des Codes erforderlich sind. Diese Aktion kann nur innerhalb des Gültigkeitsbereichs der Assembly verwendet werden. |
RequestOptional | 9 | Die Anforderung weiterer Berechtigungen, die optional sind (zur Ausführung nicht erforderlich). Diese Anforderung lehnt implizit alle anderen nicht speziell angeforderten Berechtigungen ab. Diese Aktion kann nur innerhalb des Gültigkeitsbereichs der Assembly verwendet werden. |
RequestRefuse | 10 | Die Anforderung, dass dem aufrufenden Code keine Berechtigungen erteilt werden, die missbraucht werden könnten. Diese Aktion kann nur innerhalb des Gültigkeitsbereichs der Assembly verwendet werden. |
Beispiele
In diesem Beispiel wird gezeigt, wie die CLR benachrichtigt wird, dass Code in aufgerufenen Methoden nur IsolatedStoragePermissionenthält, und zeigt auch, wie geschrieben und aus isoliertem Speicher gelesen wird.
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::IO::IsolatedStorage;
using namespace System::IO;
static void WriteIsolatedStorage()
{
try
{
// 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.
Stream^ fileCreateStream = gcnew
IsolatedStorageFileStream(
"AssemblyData",
FileMode::Create,
IsolatedStorageFile::GetUserStoreForAssembly());
StreamWriter^ streamWriter = gcnew StreamWriter(
fileCreateStream);
try
{
// Write some data out to the isolated file.
streamWriter->Write("This is some test data.");
streamWriter->Close();
}
finally
{
delete fileCreateStream;
delete streamWriter;
}
}
catch (IOException^ ex)
{
Console::WriteLine(ex->Message);
}
try
{
Stream^ fileOpenStream =
gcnew IsolatedStorageFileStream(
"AssemblyData",
FileMode::Open,
IsolatedStorageFile::GetUserStoreForAssembly());
// Attempt to open the file that was previously created.
StreamReader^ streamReader = gcnew StreamReader(
fileOpenStream);
try
{
// Read the data from the file and display it.
Console::WriteLine(streamReader->ReadLine());
streamReader->Close();
}
finally
{
delete fileOpenStream;
delete streamReader;
}
}
catch (FileNotFoundException^ ex)
{
Console::WriteLine(ex->Message);
}
catch (IOException^ ex)
{
Console::WriteLine(ex->Message);
}
}
// 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)]
int main()
{
WriteIsolatedStorage();
}
// This code produces the following output.
//
// This is some test data.
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.
Option Strict On
Imports System.Security.Permissions
Imports System.IO.IsolatedStorage
Imports 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 NotInheritable Class App
Shared Sub Main()
WriteIsolatedStorage()
End Sub
Shared Sub 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.
Dim s As New IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly())
Try
' Write some data out to the isolated file.
Dim sw As New StreamWriter(s)
Try
sw.Write("This is some test data.")
Finally
sw.Dispose()
End Try
Finally
s.Dispose()
End Try
' Attempt to open the file that was previously created.
Dim t As New IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly())
Try
' Read the data from the file and display it.
Dim sr As New StreamReader(t)
Try
Console.WriteLine(sr.ReadLine())
Finally
sr.Dispose()
End Try
Finally
t.Dispose()
End Try
End Sub
End Class
' This code produces the following output.
'
' Some test data.
Hinweise
Achtung
Die Codezugriffssicherheit (CAS, Code Access Security) ist in allen Versionen von .NET Framework und .NET veraltet. Aktuelle Versionen von .NET berücksichtigen keine CAS-Anmerkungen und erzeugen Fehler, wenn CAS-bezogene APIs verwendet werden. Entwickler*innen sollten alternative Mittel zum Ausführen von Sicherheitsaufgaben suchen.
In der folgenden Tabelle werden die Zeit, zu der jede Sicherheitsaktion ausgeführt wird, und die von ihr unterstützten Ziele beschrieben.
Wichtig
In .NET Framework 4 wurde die Laufzeitunterstützung für das Erzwingen der Berechtigungsanforderungen Deny, RequestMinimum, RequestOptional und RequestRefuse entfernt. Diese Anforderungen sollten nicht in Code verwendet werden, der auf .NET Framework 4 oder höher basiert. Weitere Informationen zu diesen und anderen Änderungen finden Sie unter Sicherheitsänderungen.
Sie sollten nicht in .NET Framework 4 verwenden LinkDemand
. Verwenden Sie stattdessen die, um die SecurityCriticalAttribute Nutzung auf voll vertrauenswürdige Anwendungen zu beschränken, oder verwenden Sie Demand
, um teilweise vertrauenswürdige Aufrufer einzuschränken.
Erklärung der Sicherheitsaktion | Zeitpunkt der Aktion | Unterstützte Ziele |
---|---|---|
LinkDemand (Nicht in .NET Framework 4 verwenden) |
Just-in-Time-Kompilierung | Klasse, Methode |
InheritanceDemand |
Ladezeit | Klasse, Methode |
Demand |
Laufzeit | Klasse, Methode |
Assert |
Laufzeit | Klasse, Methode |
Deny (veraltet in .NET Framework 4) |
Laufzeit | Klasse, Methode |
PermitOnly |
Laufzeit | Klasse, Methode |
RequestMinimum (veraltet in .NET Framework 4) |
Gewährungszeit | Assembly |
RequestOptional (veraltet in .NET Framework 4) |
Gewährungszeit | Assembly |
RequestRefuse (veraltet in .NET Framework 4) |
Gewährungszeit | Assembly |
Weitere Informationen zu Attributzielen finden Sie unter Attribute.