Cinco Tesis Para Desencriptar El Poder. Enmiendas XYZ Español Portugués
ASP.NET – Encriptar y Desencriptar secciones del Web.config
-
Upload
jhonedward -
Category
Documents
-
view
214 -
download
6
Transcript of ASP.NET – Encriptar y Desencriptar secciones del Web.config
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 conexión
(ConnectionStrings), de alguna manera no pudiera ser visualizada por personas que tuvieran acceso al
directorio virtual, ya sea en la máquina local o en el mismo servidor.
La solución 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.configConfiguración protegida RSA y la herramienta Aspnet_regiis.exe.
En este artículo 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 aplicación. 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 conexión 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 aplicación. 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 línea se debe ejecutar en el símbolo del sistema que provee .Net “Visual Studio 2008 Command Prompt” y sirve para encriptar la sección connectionStrings de una aplicación publicada en un directorio virtual llamada Example1. aspnet_regiis -pe "connectionStrings" -app "/Example1" De igual forma la siguiente línea de código permite encriptar la sección connectionStrings de una aplicación cuyo proyecto se encuentra en C:\Projects\Example1. aspnet_regiis.exe -pef "connectionStrings" C:\Projects\Example1 El resultado de la ejecución de cualquiera de estos comandos debe ser satisfactorio. Ya en este momento la sección 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 símbolo 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 aplicación para acceder a esta
informacion. Para allar el usuario al que debemos dar permisos podemos crear una aplicación de prueba y ingresar
el siguiente codigo.
using System.Security.Principal; ... protected void Page_Load(object sender, EventArgs e)
{ Response.Write(WindowsIdentity.GetCurrent().Name); }
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 aplicación tendrá acceso a esta sección y podrá desencriptarla aunque parece largo y difícil
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 artículo.