Partager via


Vérification de l'accès du code ADO.NET à l'aide des autorisations de sécurité

Dans les scénarios avec confiance partielle, vous pouvez identifier dans votre code les méthodes qui nécessitent un privilège particulier de sécurité d'accès du code en spécifiant la propriété SqlClientPermissionAttribute requise. Si ce privilège n'est pas autorisé pour votre code, une exception sera levée avant que votre code ne soit exécuté.

Remarque   Étant donné que les fournisseurs de données OLE DB et ODBC .NET Framework ne sont compatibles avec des scénarios de confiance partielle, le test d'un privilège particulier peut réussir ; toutefois, lors de son exécution, le code échouera avec un SecurityException.

Par exemple, le code suivant illustre une méthode qui est identifiée comme nécessitant une chaîne de connexion particulière. Si cette chaîne de connexion n'est pas autorisée, une exception est levée et la méthode n'est pas exécutée.

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.");
    }
  }
}

Voir aussi

Écriture de code ADO.NET sécurisé | Sécurité d'accès du code