En el web.config guardamos información muy sensitiva, digamos la cadena de conexión a la base de datos, otras veces la lista de usuarios con que se puede acceder a la aplicación, y así sucesivamente... y obviamente debemos darle toda la seguridad del caso.
Ante este tipo de información hay que extremar la medidas de seguridad, si bien es cierto que desde el browser no es posible que te hurten la información del web.config, también es cierto que no es la única manera de que lo obtengan.
A través de FTP pueden descargarse sin problemas el web.config... y para ello sólo se necesita un descuido de tu parte.
La pregunta es: Cómo protejo mi web.config?
Hay varias formas... una de ellas puede ser tener un web.config que simplemente haga referencia a archivos de configuración externos (fuera del directorio virtual), estos archivos de configuración externos guardarán la información sensitiva de manera más segura. Este tema se ha abordado en previos post.
Otra manera es encriptando la información sensitiva del web.config. Pareciera que esta tarea fuera muy difícil... nada de eso!!! es lo más simple del mundo, veamos:
Digamos que tienes una aplicación web llamada "Tests", ubicada en la siguiente ruta: G:\Inetpub\wwwroot\Tests
Y esta aplicación web guarda en su web.config esta cadena de conexión:
Vamos a empezar encriptando esta cadena de conexión, para eso hacemos lo sgte:
1.-Abrimos la línea de comandos y nos movemos de directorio, vamos a la carpeta v2.0.50727 (porque estamos trabajando con el framework 2.0 para adelante), así debe quedar:
2.- Ahí Escribimos
aspnet_regiis -pef "connectionStrings" "G:\Inetpub\wwwroot\Tests"
o
aspnet_regiis -pe "connectionStrings" -app "/Tests"
Hay que escribir "connectionStrings" tal como se ve... con S mayúscula, sino no reconocerá la orden.
Y presionamos enter, esta sentencia encriptará la sección "connectionStrings" del web.config
El resultado será algo similar a esto:
Si hubiéramos querido encriptar la sección appSettings del web.config... pues hacíamos igual que el ejemplo de arriba... sólo que reemplazábamos la palabra "connectionStrings" x "appSettings".
Nota: la operación de encriptar el web.config se debe realizar sobre la misma máquina de producción... ya que si encriptas el webconfig en una PC y luego la subes encriptada a otra PC: No funcionará... porque el algoritmo de encriptación usa algunos identficadores únicos de la PC para el encriptado... lo cual impedirá que se pueda leer desde otra PC.
Para recuperar la cadena de conexión no hay que hacer magia... no hay que decriptar nada, leyeron?? repito: no hay que decriptar nada... el framework lo hará por nosotros de manera automática... entonces para recuperar la cadena de conexión simplemente hacemos esto:
Esto tiene para rato... la seguimos en el próximo post:
Encriptar el web.config II
8 comentarios:
Debo felicitarte segundo, por que tu blog es excelente, tiene tips muy buenos para cuando uno programa. Creo que deberia estar mas arriba en las busquedas, es una lastima que nadie comente tus posts, por que la verdad son muy utiles.
saludos grandes,
desde bs.as y estamos en contacto,
Fernando.
Gracias por tus palabras Fernando,
pero realmente sí comentan los posts, tal vez no con la frecuencia y cantidad que quisiera... pero igual seguiré compartiendo lo que sé.
Estamos en contacto.
De nada, a mi me parecio excelente tu blog, muy util y claro con sus ejemplos :)
Segundo usas gtalk ??? ya que estoy incursinando en el mundo de asp.net y me gustaria hacerte algunas consultas ... el mio es: fernandogermanoliva@gmail.com
saludos :)
Fernando,
sinceramente, no lo uso amigo...
si tienes consultas puedes hacerlas desde el post correspondiente.
Saludos
claro entiendo y alguna via de email a la cual yo pueda mandarte alguna duda puntual del codigo? desde ya muchas gracias segundo
HOla, con este post aprendi a encriptar partes de mi web.config
pero tengo una duda, yo encripto mi web.config en mi pc y luego lo subo al servidor, como hago para que el servidor decripte los valores del web.config
saludos.
Haaa! orale,no habia visto la segunda parte.
yo estoy en la misma situacion que juanito jajajaj
gracias fue de gran ayuda.
Saludos efenix ;)
Publicar un comentario