Compartir a través de


Comprobar el acceso a código de ADO.NET mediante permisos de seguridad

En el caso de los escenarios que no son de plena confianza, puede identificar métodos específicos del código que precisan un privilegio especial de seguridad de acceso a código mediante la especificación de la propiedad SqlClientPermissionAttribute requerida. Si el código no dispone de ese privilegio, antes de que se llegue a ejecutar se inicia una excepción.

Nota   El proveedor de datos de .NET Framework para OLE DB y para ODBC no están habilitados para escenarios de confianza parcial, por lo que puede que la prueba de un privilegio determinado se lleve a cabo correctamente, pero cuando se ejecute el código se producirá un error con una SecurityException.

Por ejemplo, en el código siguiente se muestra la forma de indicar que un método necesita una cadena de conexión determinada. Si dicha cadena de conexión no está permitida, se iniciará una excepción y no se ejecutará el método.

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

Vea también

Escribir código de ADO.NET seguro | Seguridad de acceso a código