lunes, 17 de septiembre de 2012

[Tutorial] Guardar Contraseñas o ConnectionString en el codigo suele ser seguro?(parte 1)


Generalmente  cuando tenemos una aplicación en cualquier lenguaje de programacion lo que solemos hacer es guardar el password de ingreso a tal en el mismo codigo o en una base de datos, pero que sucede si decompilan nuestro ejecutable y obtienen ese password o la ConnectionString de nuestra DB?, un gran problema diria yo.
En este articulo vamos a exponer un metodo sencillo para ocultar esos datos y que al decompilar sea “casi” imposible obtener  los datos que ocultemos.
Un decompilador (del inglés "decompiler", a veces castellanizado descompilador) es un programa de ordenador que realiza la operación inversa a un compilador. Esto es, traducir código o información de bajo nivel de abstracción (sólo diseñado para ser leído por un ordenador, ej código máquina) a un lenguaje o medio de mayor nivel de abstracción (usualmente diseñado para ser leído por un humano, ej cualquier lenguaje de programación de alto nivel).
 ahora dos imágenes sencillas para ver un poco lo que digo, es para que entiendan al vistazo lo que digo.
 

Como vemos en la primer imagen del Visual Basic la variablle "pass" guarda la contraseña que nos daría acceso a nuestro "programa". En la segunda imagen de un decompilador (el único que encontré rapidamente) nos muestra donde esta remarcado la misma contraseña que escribimos en el visual basic, que loco no? pero así de fácil nos pueden sacar la ConnectionString de nuestra DB y de igual manera tener acceso a nuestro sistema de forma total perjudicándonos o perjudicando a quien vendimos nuestro producto.

en esta breve introduccion de lo que veremos, trataremos de guardar estos datos importante dentro de las secciones del archivo, y agregarle alguna rutina antidebug y algun otro mas.