
Siempre que realicemos una aplicación que tiene acceso a una base de datos, debemos extremar las precauciones ya que un error tan simple y común como componer sentencias SQL concatenando los strings con el contenido de los controles (ie: un TextBox) puede dar lugar a una seria vulnerabilidad que podría no solo permitir la destrucción ó modificación de los datos, si no su exposición lo que podría ser igual de peligroso o peor si se trata de datos confidenciales.
Hace tiempo tenía especial interés por documentarme acerca de estos temas más en serio, ya que aunque tenía unas nociones básicas de seguridad en ADO.NET para evitar SQL injections , el uso de SecureString , etc… etc… quería estar totalmente seguro de que no estaba dejando nada al aire. Buscando por la red me encuentro con una serie de artículos en MSDN España bastante buenos acerca de seguridad en el apartado de ADO.NET.
Bajo el título Proteger aplicaciones de ADO.NET, reza el siguiente enunciado:
Para escribir una aplicación de ADO.NET segura es necesario algo más que evitar los errores de codificación más comunes. Una aplicación que tiene acceso a datos tiene muchos puntos débiles potenciales que un agresor puede aprovechar para obtener, manipular o destruir datos confidenciales. Es importante comprender todos los aspectos de la seguridad, desde el proceso de modelo de amenazas durante la fase de diseño de su aplicación hasta la implementación y el posterior mantenimiento.
Entre los artículos destacan por su orientación práctica y su claridad uno de Instrucciones de codificación segura de ADO.NET con un sencillo y claro ejemplo de que es y como se explota un SQL Injection , otro para validar los datos que introduce el usuario titulado Validar los datos proporcionados por el usuario, y otro sobre como Proteger cadenas de conexión y porque es un gran riesgo para la seguridad dejar los “connecionstring” puestos “a capón” en nuestro código. También son destacables varios artículos introductorias al tema de seguridad en bases de datos, pero mucho más los artículos de temáticas avanzadas como Seguridad de acceso a código y ADO.NET y Criptografía y acceso a datos, a los que intentaré echar un ojo este fin de semana y poner en práctica algunas cuantas técnicas ahí descritas.






