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.
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.
Ejemplo cadena conexion estandard
server=localhost;database=mibasededatos;uid=usuario;password=Clave;
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.
- 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. - Acceso fácil a la información: El contenido del elemento
appSettings
es fácilmente accesible mediante la claseConfigurationManager
, lo que significa que cualquier persona con acceso a la aplicación puede obtener la información almacenada en él. - Limitaciones de seguridad: El elemento
appSettings
no proporciona ninguna característica adicional de seguridad, como la autenticación o la autorización. - 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:
- Abra una consola de comandos y vaya al directorio de la aplicación.
- 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. - 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!!