Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Zzombi en 26 Marzo 2010, 23:30 pm



Título: pequeña duda.. seguridad en el string de conexión?
Publicado por: Zzombi en 26 Marzo 2010, 23:30 pm
buenas.

siempre que conectamos a una bd colocamos el string de conexión de la BD correspondiente.. si es con autentificación colocamos en el string el nombre de usuario y contraseña... es justamente con la contraseña que tengo la duda... su seguridad
 ya que .net funciona bajo el código MSIL este código puede ser leido facilmente por algunas aplicaciones transformandolo a código de alto nivel.. por lo tanto se podría ( se puede de hecho) ver todo el código fuente del ejecutable.. y por supuesto la contraseña que esta en el string de conexión.
incluso ofuscando el código sería peligroso que la contraseña estubiese tan expuesta en el string de conexión.

la duda es... ¿ que se puede hacer para proteger el string de conexión ?

se que en asp.net se puede proteger modificando el web.config.. pero en una aplicación de escritorio?


saludos.


Título: Re: pequeña duda.. seguridad en el string de conexión?
Publicado por: [D4N93R] en 27 Marzo 2010, 02:42 am
Hola,

No es tan dificil, pero entenderlo requiere de conocimientos medios/avanzados sobre .net

Código
  1. using System;
  2. using System.Configuration;
  3. using System.Xml;
  4.  
  5. namespace EncryptAppConfigSections.Properties {
  6.  
  7.    internal sealed partial class Settings {
  8.  
  9.        public Settings() {
  10.             this.SettingsSaving += this.SettingsSavingEventHandler;
  11.        }
  12.  
  13.        private void SettingsSavingEventHandler(object sender, EventArgs e)
  14.        {
  15.            ProtectSection("connectionStrings");
  16.        }
  17.  
  18.        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
  19.            Console.WriteLine(e.SettingClass.ToString());
  20.            Console.WriteLine(e.SettingName.ToString());
  21.            ProtectSection("connectionStrings");
  22.        }
  23.  
  24.        private void ProtectSection(String sSectionName)
  25.        {
  26.            Configuration config = ConfigurationManager.
  27.            OpenExeConfiguration(ConfigurationUserLevel.None);
  28.            ConfigurationSection section =
  29.                config.GetSection(sSectionName);
  30.            if (section != null)
  31.            {
  32.                if (!section.IsReadOnly())
  33.                {
  34.                    section.SectionInformation.ProtectSection
  35.                         ("RsaProtectedConfigurationProvider");
  36.                    section.SectionInformation.ForceSave = true;
  37.                    config.Save(ConfigurationSaveMode.Full);
  38.                }
  39.            }
  40.        }
  41.    }
  42. }
  43.  

No hace falta crear un método para "Desproteger" ya que esto es parte del framework y tampoco hace falta crear clases especiales, solamente es esto y ya..

Un saludo!


Título: Re: pequeña duda.. seguridad en el string de conexión?
Publicado por: Zzombi en 27 Marzo 2010, 03:40 am
hola D4N93R.

D4N93R  al ver ese codigo con algun programa que entienda el MSIL de .net.. no se vera el string de conexion que coloque en

ProtectSection("connectionStrings");  ??

saludos.





Título: Re: pequeña duda.. seguridad en el string de conexión?
Publicado por: [D4N93R] en 27 Marzo 2010, 20:09 pm
Si, pero  no importa ese texto es implemente para indicar que parte es la que quieres cifrar..

Saludos!


Título: Re: pequeña duda.. seguridad en el string de conexión?
Publicado por: .mokk. en 28 Marzo 2010, 07:04 am
Bueno yo utilizo este pequeño compresor
http://madebits.com/netz/

Es gratuito y facil de usar ahi solo lee la web en una parte esta la descarga y tambien el modo de uso nada complicado ^^

Y con ello ya no podran leer el codigo fuente jeje


Título: Re: pequeña duda.. seguridad en el string de conexión?
Publicado por: Zzombi en 30 Marzo 2010, 01:48 am
gracias .mokk.
buen dato.