Saltar al contenido

Leer una Cadena de conexión desde Webconfig

Una Cadena de conexión desde Webconfig contiene la información de para conectarnos a una base de datos desde nuestra crud. Esto podemos estas dependeran de nuestros sistema de gestion de base de datos. Las mismas son utilizadas por los desarrolladores en el desarrollo de las aplicaciones.

En este articulo exploraremos distintas formas de almacenar una cadena de conexion de sql server desde distintos formatos de archivos.

Índice

    Cadena de conexión desde Webconfig

    tomando en cuenta que tenemos una cadena de conexion en una aplicacion web, era una buena practica almacenar la cadena de conexión para su aplicación en un archivo de configuración en lugar de una cadena codificada en su código.

    CRUD base de datos

    Ejemplo cadena conexion estandard

    server=localhost;database=mibasededatos;uid=usuario;password=Clave;

    Sql server

    Esta cadena es de las mas comunmente usadas dentro de las aplicaciones, indicamos el usuario y la clave del usuario de sql para permitir que nuestra aplicacion pueda conectarse.

    Cadena de conexión en el archivo de configuración .NET

    No use la sección appSettings en web.config. En su lugar, use la sección connectionStrings en web.config.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <connectionStrings>
        <add name="myConnectionString" connectionString="server=localhost;database=mibasededatos;uid=usuario;password=Clave;" />
      </connectionStrings>
    </configuration>  
    

    Leer una cadena desde un web.config

    Para leer la Cadena de conexión desde Webconfig en su código, use la clase ConfigurationManager.

    string connStr = ConfigurationManager.ConnectionStrings[«myConnectionString»].ConnectionString;


    Recuerde agregar una referencia al componente System.Configuration. Luego incluya el espacio de nombres System.Configuration para obtener acceso a la clase ConfigurationManager.

    Por que no debo usar appsetting ?

    Existen varias razones por las que no se recomienda usar el elemento appSettings en el archivo de configuración para almacenar información sensibles como las cadenas de conexión.

    1. No se encripta de forma predeterminada: El contenido del elemento appSettings no se encripta de forma predeterminada, lo que significa que si alguien tiene acceso al archivo de configuración, tendrá acceso a la información almacenada en él.
    2. Acceso fácil a la información: El contenido del elemento appSettings es fácilmente accesible mediante la clase ConfigurationManager, lo que significa que cualquier persona con acceso a la aplicación puede obtener la información almacenada en él.
    3. Limitaciones de seguridad: El elemento appSettings no proporciona ninguna característica adicional de seguridad, como la autenticación o la autorización.
    4. Puede ser expuesto en un ambiente de producción.

    En su lugar, se recomienda utilizar un mecanismo de almacenamiento de claves seguras, como Azure Key Vault, para almacenar información sensibles como las cadenas de conexión. Esto proporciona un nivel adicional de seguridad mediante la encriptación y la autenticación y autorización.

    Ejemplo para leer desde webconfig

    Aquí hay un ejemplo de código de un programa de consola que utiliza una cadena de conexión para conectarse a una base de datos SQL Server y ejecutar una consulta simple:

    using System;
    using System.Data.SqlClient;
    using System.Configuration;
    
    class Program
    {
        static void Main(string[] args)
        {
            // Obtener la cadena de conexión del archivo de configuración
            string connectionString = ConfigurationManager.ConnectionStrings["NombreConexion"].ConnectionString;
            
            // Crear una nueva conexión a la base de datos
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Abrir la conexión
                connection.Open();
                
                // Crear un nuevo comando SQL
                string query = "SELECT * FROM tabla";
                SqlCommand command = new SqlCommand(query, connection);
                
                // Ejecutar la consulta y obtener el resultado en un objeto SqlDataReader
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    // Recorrer el resultado y mostrar los datos en la consola
                    while (reader.Read())
                    {
                        for (int i = 0; i < reader.FieldCount; i++)
                        {
                            Console.Write(reader[i] + " ");
                        }
                        Console.WriteLine();
                    }
                }
                
                // Cerrar la conexión
                connection.Close();
            }
            Console.ReadKey();
        }
    }
    
    

    Ten en cuenta que el nombre «NombreConexion» debe ser reemplazado con el nombre que utiliza en su archivo de configuración. También debe reemplazar la consulta con una que se adapte a su base de datos.

    Como encriptar una cadena de conexion en el web config?

    Hay varios métodos para encriptar una cadena de conexión en un archivo de configuración de una aplicación. Uno de los métodos más comunes es utilizar el Asistente para la seguridad de la configuración de Microsoft. Este asistente proporciona una interfaz gráfica para encriptar y desencriptar cadenas de conexión en un archivo de configuración.

    Aquí hay un ejemplo de cómo utilizar el Asistente para la seguridad de la configuración para encriptar una cadena de conexión en un archivo de configuración de una aplicación de consola:

    1. Abra una consola de comandos y vaya al directorio de la aplicación.
    2. Ejecute el comando aspnet_regiis -pef "connectionStrings" "ruta del directorio de la aplicación". Esto encriptará el elemento «connectionStrings» en el archivo de configuración de la aplicación.
    3. Para desencriptar la cadena de conexión, ejecute el comando aspnet_regiis -pdf "connectionStrings" "ruta del directorio de la aplicación".

    Otra opción es utilizar una tercera herramienta o librería para encriptar y desencriptar las cadenas de conexión. Por ejemplo, se puede utilizar la clase ProtectedData de la librería System.Security.Cryptography para encriptar y desencriptar datos.

    Ten en cuenta que estos son solo ejemplos, y se recomienda investigar más sobre cómo proteger la información sensible en su aplicación y elegir la mejor opción para su caso de uso.

    Como leer desde una cadena encriptada ?

    Una vez que ha encriptado una cadena de conexión en un archivo de configuración, puede utilizar la clase ConfigurationManager para leer la cadena de conexión encriptada. Sin embargo, en este caso, es importante asegurarse de que la aplicación tenga permisos suficientes para desencriptar la cadena de conexión antes de intentar acceder a ella.

    En caso de haber utilizado otra forma para encriptar la cadena de conexión, debería seguir las instrucciones de desencriptación de esa herramienta o librería en particular.

    En conclusion

    El webconfig sigue siendo uno de los repositorios mas utilizados por lo desarrolladores para guardar sus cadenas de conexion. para leer siempre usaremos la clase ConfigurationManager pero para guardar siempre utilizaremos connectionStrings.

    Hasta la proxima, Gracias :D!!