Sie sind auf Seite 1von 2

ASP.NET Encriptar y Desencriptar secciones del Web.

config
Hola a todos. Estube buscando la manera de poder tener mi Web.config seguro para que mis cadenas de conexin (ConnectionStrings), de alguna manera no pudiera ser visualizada por personas que tuvieran acceso al directorio virtual, ya sea en la mquina local o en el mismo servidor. La solucin la encontre en este enlace: http://www.onglasses.net/Default.aspx?id=1244 SIGUIENDO EL LINK:

Encriptar y desencriptar secciones del Web.config

Encriptar y desencriptar secciones del Web.config


Configuracin protegida RSA y la herramienta Aspnet_regiis.exe.

En este artculo se muestra como encriptar y desencriptar secciones del archivo web.config o Machine.config. En algunas ocasiones es importante encriptar los connectionStrings o cualquier otra seccion de estos archivos ya que cualquier persona que tenga acceso a el directorio donde se encuentran ya sea desde la maquina local o por red podria encontrar el servidor y las credenciales a las cual se nonecta la aplicacin. Nosotros definimos nuestro connectionStrings en el web.config de la siguiente manera.
<connectionStrings> <add name="MyLocalSQLServer" connectionString="Data Source=nombreservidor;Initial

Catalog=SegLegalizacion;Persist Security Info=True;User

De esta forma definimos el servidor al cual se conecta y las credenciales para autenticarnos en el sevidor seleccionado. Luego creamos nuestra conexin y la abrimos de la siguiente forma. SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyLocalSQLServer"].Connectio De esta forma ya accedemos al ConnectionString desde nuestra aplicacin. Ahora agregamos el siguiente codigo el cual nos permite crear un proveedor de configuracion protegida. <configProtectedData> <providers> <add keyContainerName="NetFrameworkConfigurationKey" useMachineContainer="false" description="Uses RsaCryptoServiceProvider to encrypt and decrypt"

Para encriptar el archivo web.config usaremos aspnet_regiis que nos permite encriptar tanto el web.config local de nuestro proyecto como el publicado en un directorio virtual. La siguiente lnea se debe ejecutar en el smbolo del sistema que provee .Net Visual Studio 2008 Command Prompt y sirve para encriptar la seccin connectionStrings de una aplicacin publicada en un directorio virtual llamada Example1. aspnet_regiis -pe "connectionStrings" -app "/Example1" De igual forma la siguiente lnea de cdigo permite encriptar la seccin connectionStrings de una aplicacin cuyo proyecto se encuentra en C:\Projects\Example1. aspnet_regiis.exe -pef "connectionStrings" C:\Projects\Example1 El resultado de la ejecucin de cualquiera de estos comandos debe ser satisfactorio. Ya en este momento la seccin connectionStrings debe estar encriptada y lucir algo como esto.

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"> <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#"> Ejecute el siguiente comando desde un smbolo del sistema de .NET aspnet_regiis -pe "connectionStrings" -app "/UserRSA" -prov "MyUserRSAProtectedConfigurationProvider" Si en este momento intentaramos conectarnos a la base de datos no podriamos. Para esto no hay que modificar el codigo simplemente debemos dar permiso al usuario ASP donde esta publicada la aplicacin para acceder a esta informacion. Para allar el usuario al que debemos dar permisos podemos crear una aplicacin de prueba y ingresar el siguiente codigo. using System.Security.Principal; ... protected void Response.Write(WindowsIdentity.GetCurrent().Name); } Page_Load(object sender, EventArgs e) {

Este nos retornara el usuario. Por ultimo agregamos el siguiente comando donde debemos remplazar NT Authority\Servicio de red por el usuario anteriormente retornado.

aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Servicio de red" De esta forma nuestra aplicacin tendr acceso a esta seccin y podr desencriptarla aunque parece largo y difcil no lo es. Comandos. Encripcion de directorio virtual. aspnet_regiis -pe "connectionStrings" -app "/Example1" Encripcion de directorio local. aspnet_regiis.exe -pef "connectionStrings" C:\Projects\Example1 desencripcion de directorio virtual. aspnet_regiis -pd "connectionStrings" -app "/ Example1"

TOMADO: http://www.onglasses.net/Default.aspx?id=1244
Muchas gracias a Javier Vera Torres por su excelente artculo.

Das könnte Ihnen auch gefallen