Privacidad y seguridad de datos
La protección y la administración de información confidencial en una aplicación de ADO.NET depende de los productos y las tecnologías utilizados para crearla. ADO.NET no proporciona de forma directa servicios para proteger ni cifrar datos.
Criptografía y códigos hash
Las clases del espacio de nombres System.Security.Cryptography de .NET Framework se pueden utilizar desde las aplicaciones de ADO.NET para impedir que terceras partes no autorizadas lean o modifiquen los datos. Algunas clases son contenedores para Microsoft CryptoAPI no administrado, mientras que otras son implementaciones administradas. El tema Servicios criptográficos proporciona información general sobre la criptografía en .NET Framework, describe su implementación y cómo realizar tareas criptográficas específicas.
Al contrario que la criptografía, que permite cifrar datos y descifrarlos posteriormente, el proceso hash de datos es unidireccional. La utilización de algoritmos hash en los datos resulta útil para evitar la manipulación mediante la comprobación de que los datos no han sido alterados: para cadenas de entrada idénticas, los algoritmos hash siempre generan valores de salida cortos idénticos que se pueden comparar fácilmente. Asegurar la integridad de los datos mediante códigos hash explica cómo generar y comprobar valores hash.
Cifrar archivos de configuración
La protección del acceso al origen de datos es uno de los objetivos más importantes a la hora de proteger una aplicación. Las cadenas de conexión presentan una posible vulnerabilidad si no se protegen. Las cadenas de conexión que se guardan en los archivos de configuración se almacenan en archivos XML estándar para los que .NET Framework ha definido un conjunto común de elementos. La configuración protegida permite cifrar información confidencial en un archivo de configuración. Si bien se ha diseñado principalmente para aplicaciones ASP.NET, la configuración protegida también se puede usar para cifrar secciones del archivo de configuración en aplicaciones Windows. Para más información, consulte Proteger la información de conexión.
Proteger valores de cadena en memoria
Si un objeto String contiene información confidencial, como una contraseña, un número de tarjeta de crédito o datos personales, existe el riesgo de que la información se pueda revelar una vez utilizada, porque la aplicación no puede eliminar los datos de la memoria del equipo.
Un objeto String es inmutable, porque no se puede modificar su valor una vez que se ha creado. Los cambios que parecen modificar el valor de la cadena crean de hecho una nueva instancia de un objeto String en memoria, que almacena los datos como texto sin formato. Además, no es posible predecir si las instancias de cadena se eliminarán de la memoria. La reclamación de memoria con cadenas no es determinista en la recolección de elementos no utilizados de .NET. Debe evitar el uso de las clases String y StringBuilder si los datos son realmente confidenciales.
La clase SecureString proporciona métodos para cifrar texto con la API de protección de datos (DPAPI) en memoria. La cadena se elimina posteriormente de la memoria cuando ya no es necesaria. No existe ningún método ToString
para leer rápidamente el contenido de un objeto SecureString. Puede inicializar una nueva instancia de SecureString
sin ningún valor o pasándole un nuevo puntero a una matriz de objetos Char. A continuación, puede usar los diferentes métodos de la clase para trabajar con la cadena.