Ver Mensaje Individual
  #5  
Antiguo 09-01-2009
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 18
rolandoj Va por buen camino
Cifrado en cliente

Hola,

Disculpa; pero el método que estás usando es totalmente inseguro y cualquiera, más o menos entrenado puede volarse esa "seguridad". Las aplicaciones que a las que dices estar acostumbrado, están trabajando muy mal esa parte. Si tienes datos importantes, te sugiero reescriban él código de seguridad tan pronto como sea posible

Bajo ninguna circunstancia deberían viajar sin cifrar datos importantes por la red. De hecho, lo lógico es cifrar la totalidad del requerimiento, dificultando aún más la posibilidad de que descifren tú clave de usuario. Eso es precisamente lo que yo hago en Delphi; desde mi cliente, mando encriptado todo el bloque de datos vía "POST". No lo mencioné al principio para no complicar el tema

En el servidor, lo que se maneja, transparentemente para los usuarios finales son dos cosas:

1. El usuario y la clave de conexión a la Base de Datos, la cual, normalmente, es una sola para todos los requerimientos que se reciben. Esa se debe encriptar, como una seguridad adicional, con un programa residente en el servidor que deje esa encriptación en campos del registro de Windows, o en un archivo. Cuando tú aplicación servidor se ejecuta, debe leer esa información y desencriptarla para así poder conectarse a la Base de Datos

2. La autenticación de usuario, es decir, las claves de usuario de la aplicación como tal, no las de conexión a la Base de Datos. Esa información, que es a la que te refieres, se guarda encriptada en una tabla de la Base de datos. Cuando el cliente envía un requerimiento, los datos se cifran primero en el cliente, de forma que viajen ocultos a terceros; el servidor los recibe y los desencripta; luego lee de la tabla de usuario, desencripta la clave guardada en la base de datos y la compara con la que ha recibido.

Vale anotar que de ninguna manera, debería compararse directamente la cadena encriptada en la Base de Datos con la enviada desde el cliente; porque la única forma de que sean iguales es de que el algoritmo genere una encriptación idéntica para una cadena caracteres cada vez que sea invocado. Los algoritmos de ese tipo son los más fáciles de vulnerar y no deberían ser usados.

De no proceder así. cualquiera puede interceptar el comando http que envías y ver cual es tú clave de usuario; para lo cual haya varias técnicas que no creo del caso detallar. De ahí en adelante pueden entrar a cualquier funcionalidad de tú aplicación a la que tengas acceso

Mi problema es de conocimiento como implementar las cosas con página Web; pero, en todo lo demás relativo al tema, si tengo mucha experiencia. De lo que te acabo de explicar estoy totalmente seguro. Es más, casualmente hoy pude romper facilmente la seguridad de una aplicación que estaba usando una persona a la que consulté respecto al problema; y precisamente cometía el mismo error que tú
Responder Con Cita