Compartir a través de


Almacenar información confidencial mediante ASP.NET

Actualización: noviembre 2007

En una aplicación ASP.NET, es necesario utilizar con frecuencia información altamente confidencial. Por ejemplo, puede ser necesario utilizar un Id. de usuario y una contraseña para establecer conexión con una base de datos, o almacenar los Id. de usuario y las contraseñas empleados por los clientes para tener acceso a la aplicación. Aunque que se puede usar SSL (Secure Sockets Layer) para cifrar la información transferida a través de la red, esa información también se debe proteger cuando se almacena tanto en el servidor como en el cliente. En este tema se ofrecen algunas directrices generales para almacenar información confidencial.

Nota:

Para obtener más información sobre cómo almacenar información confidencial, vea Improving Web Application Security: Threats and Countermeasures en el sitio web de MSDN.

Evitar almacenar información confidencial siempre que sea posible

La mejor manera de evitar exponer información confidencial en una aplicación es no almacenarla. Reduzca al mínimo los lugares en los que se almacena información confidencial. Evite almacenar la información confidencial de una aplicación en una cookie o en un control que se almacene en el explorador, ya que esto puede exponer la información confidencial a los clientes de la aplicación. Evite almacenar la información confidencial en la lógica de la aplicación. Como alternativa, recupere la información confidencial desde una ubicación de configuración segura o desde el cliente.

Cifrar la información confidencial

Cuando almacene información confidencial, evite almacenarla en texto legible o en un formato que se descodifique fácilmente, como la codificación Base64. En lugar de esto, cifre la información para que, si se expone de algún modo a un atacante, éste no pueda determinar con facilidad lo que la información confidencial contiene.

Si la información confidencial sólo se tiene que comprobar y no se tiene que descifrar para convertirla a un formato legible, cífrela mediante un hash unidireccional. A continuación, cuando compare la información confidencial recibida de un origen que se está validando, aplique un algoritmo hash al valor recibido y compare los hash para completar la comprobación. Por ejemplo, si utiliza la autenticación de formularios y suscripción de ASP.NET para realizar la autenticación de usuario en la aplicación, defina el formato de la contraseña como Hashed para que las contraseñas se cifren mediante un algoritmo hash unidireccional cuando se almacenen en el origen de datos o se comparen para validarse.

Cuando almacene información confidencial como cadenas de conexión, credenciales de usuario o claves de cifrado en el archivo Web.config de una aplicación, cifre las partes confidenciales del archivo Web.config utilizando un proveedor de configuración protegido. Para obtener más información sobre la configuración protegida, vea Cifrar información de configuración mediante una configuración protegida.

Para obtener más información sobre el uso del cifrado para proteger la información confidencial, vea Modelo de criptografía de .NET Framework.

Proteger la información confidencial mediante permisos

Cuando almacene información confidencial en archivos, bases de datos, el Registro u otras ubicaciones, utilice las listas de control de acceso de NTFS y los permisos de las bases de datos para restringir el acceso a la información exclusivamente a los orígenes y el acceso requeridos. Para obtener más información, consulte la documentación de la base de datos o Listas de control de acceso (ACL) necesarias para ASP.NET.

Vea también

Conceptos

Seguridad de aplicaciones Web en tiempo de ejecución