Überprüfen des ADO.NET-Codezugriffs mit Sicherheitsberechtigungen
In teilweise vertrauenswürdigen Szenarien können Sie mit der SqlClientPermissionAttribute-Eigenschaft für bestimmte Methoden im Code festlegen, dass eine bestimmte Codezugriffssicherheits-Berechtigung erforderlich ist. Wenn diese Berechtigung nicht für den Code vorliegt, wird eine Ausnahme ausgelöst, bevor der Code ausgeführt wird.
Hinweis Da der .NET Framework-Datenprovider für OLE DB und der .NET Framework-Datenprovider für ODBC nicht für teilweise vertrauenswürdige Szenarien aktiviert sind, kann der Test für eine bestimmte Berechtigung möglicherweise erfolgreich durchgeführt werden, der Code schlägt jedoch zur Laufzeit mit einer SecurityException fehl.
Der folgende Code zeigt beispielsweise eine Methode, für die eine bestimmte Verbindungszeichenfolge erforderlich ist. Wenn diese Verbindungszeichenfolge nicht zulässig ist, wird eine Ausnahme ausgelöst, und die Methode wird nicht ausgeführt.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Security
Imports System.Security.Permissions
Public Class Sample
<SqlClientPermissionAttribute(SecurityAction.Demand, ConnectionString := " Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")> _
Private Shared Sub OpenConn()
Dim testConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")
testConn.Open()
Console.WriteLine("The calling method has been granted sufficient permission to access the database.")
testConn.Close()
End Sub
Public Shared Sub Main()
Try
OpenConn()
Catch e As SecurityException
Console.WriteLine("The calling method has not been granted sufficient permission to access the database.")
End Try
End Sub
End Class
[C#]
using System;
using System.Data;
using System.Data.SqlClient;
using System.Security;
using System.Security.Permissions;
public class Sample
{
[SqlClientPermissionAttribute(SecurityAction.Demand, ConnectionString = " Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")]
private static void OpenConn()
{
SqlConnection testConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
testConn.Open();
Console.WriteLine("The calling method has been granted sufficient permission to access the database.");
testConn.Close();
}
public static void Main()
{
try
{
OpenConn();
}
catch (SecurityException)
{
Console.WriteLine("The calling method has not been granted sufficient permission to access the database.");
}
}
}
Siehe auch
Schreiben von sicherem ADO.NET-Code | Codezugriffssicherheit