Un aspecto a tener en cuenta en el despliegue de las aplicaciones cuando las ponemos en producción es la encriptación de las secciones que puedan contener datos sensibles.
Con .NET 2.0 se pueden encriptar secciones del fichero Web.Config con la utilidad de línea de comandos «aspnet_regiis.exe«. Por defecto, el framework 2.0 viene con dos proveedores para realizar la encriptación: RSAProtectedConfigurationProvider y DPAPIProtectedConfigurationProvider.
La encriptación del fichero de configuración es transparente para la aplicación, por lo que no habrá que cambiar nada en ésta después de encriptar las secciones que nos interesen.
Por ejemplo, para encriptar las cadenas de conexión del fichero WebConfig la línea de comandos sería algo así.
aspnet_regiis -pe «connectionStrings» -app «/IISVirtualDir»
La utilidad aspnet_regiis la podéis encontrar en :
%WINDIR%Microsoft.NETFrameworkv2.0.50727
Uno de los problemas que le veo a la utilidad, es que no viene preparada para encriptar secciones de los ficheros App.Config. La utilidad aspnet_regiis buscar siempre el fichero Web.Config por lo que a priori no encripta los ficheros App.Config.
Realmente si renombrais el fichero App.Config por Web.Config podréis encriptarlo sin problemas, pero me parece un poco cutre.
En mi caso, ante la necesidad de encriptar tanto ficheros Web.Config como App.Config, he optado por hacerme una utilidad para realizar esta operación y no usar la que nos proporciona el framework…aspnet_regiis.
El código necesario para realizar esta operación es muy sencillo..
string provider = «RsaProtectedConfigurationProvider«;
Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSection section = config.GetSection(«connectionStrings«);
if (section != null & !section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection(provider);
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
}
Si se quiere descomprimir lo único que habría que hacer es llamar a UnprotectSection en lugar de a ProtectSection.
Y si queremos que esta utilidad valga también para ficheros Web.Config, el código sería exactamente el mismo pero usando WebConfigurationManager.OpenWebConfiguration para abrir el fichero de configuración.
Espero que os sea de utilidad..
La información completa sobre cómo encriptar y desencriptar la podéis encontrar en los siguientes enlaces:
Cómo: Cifrar secciones de configuración en ASP.NET 2.0 mediante RSA
Cómo: Cifrar secciones de configuración en ASP.NET 2.0 mediante DAPI