Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Como evitar que SELECT al crear una variable devuelva un valor (https://www.clubdelphi.com/foros/showthread.php?t=77340)

lmpadron 16-01-2012 18:25:47

Como evitar que SELECT al crear una variable devuelva un valor
 
Hola amigos

Tengo un soft desarrollado en C++ Builder y lo conecto a una BD en MySQL, pero necesito encriptar la informacion que se transmite para ello uso

Código SQL [-]
INSERT INTO `BD`.`TABLA` VALUES (1,AES_ENCRYPT('VALOR A ENCRIPTAR','@pass'));

Código SQL [-]
SELECT AES_DECRYPT(CAMPO,@pass) FROM `BD`.`TABLA`;

El problema para ejecutar las operaciones creo una variable con el password ahora bien lo quqe necesito es que esa variable creada con un SELECT no se vea o sea que no se pueda capturar por la red. para ello cree un procedimiento almacenado donde se creara pero cada vez que lo llamo el me muestra la variable, asi que necesito saber alguna forma de que el parametro SELECT no me devuelva un valor.
Al ejecutarse en el servidor si no devuelve valores entonces no puede capturarse por la red ... o al menos eso creo.

Se me ocurrio poner un LIMIT 0 y no muestra los valores pero aun asi en el encabezado me los muestra jejejejeje asi que no me parece que eso lo resuelva

les dejo el SP

Código SQL [-]

CREATE DEFINER=`root`@`localhost` PROCEDURE `passlog`()
BEGIN
  SELECT @pass:='MIPASSWORD' LIMIT 0;
END

Gracias de antemano

roman 16-01-2012 18:36:10

No queda claro qué quieres hacer. Un SELECT sirve para traer información del servidor al cliente, luego entonces, "cancelar" el valor devuelto equivale a cancelar la consulta, o sea, a no hacerla.

Pienso que podrías seleccionar el campo sin desencriptar, y desencriptarlo en el cliente con alguna biblioteca que lo haga, por ejemplo, Domingo Seoane tiene unas excelentes rutinas para cifrado AES.

// Saludos

lmpadron 16-01-2012 19:30:49

Cita:

Empezado por roman (Mensaje 423073)
No queda claro qué quieres hacer.

Lo que quiero hacer es crear una variable en el servidor MySQL y no conosco otro metodo excepto el SELECT pero el problema es que al crear la variable con el SELECT me pueden capturar su valor en la red usando un Snifer.
Por eso cree un procedimiento almacenado pero al llamar al procedimiento sucede exactamente lo mismo o sea crea la variable, devuelve el valor y ahi esta de nuevo :D caminado descifradamente por la red :D jeje

Cita:

Empezado por roman (Mensaje 423073)
Pienso que podrías seleccionar el campo sin desencriptar, y desencriptarlo en el cliente con alguna biblioteca que lo haga, por ejemplo, Domingo Seoane tiene unas excelentes rutinas para cifrado AES.

Voy a revisar a ver, gracias por su ayuda !!!

roman 16-01-2012 19:45:59

Si te fijas, para el caso, también cuando insertas el registro, la variable viaja sin encriptar desde el cliente al servidor pues es éste quien la encripta.

// Saludos

lmpadron 16-01-2012 19:50:53

Cita:

Empezado por roman (Mensaje 423082)
Si te fijas, para el caso, también cuando insertas el registro, la variable viaja sin encriptar desde el cliente al servidor pues es éste quien la encripta.

Esto de la seguridad resulta mas complejo de lo que a primera vista parece :D:D:D:D:D

lmpadron 16-01-2012 21:14:48

Voy a probar con la AES.pas del amigo Seoane y continuo en el foro de c++ dado que ya no es necesario cifrar en MySQL porque voy a hacerlo desde mi aplicación.

Gracias por la ayuda


La franja horaria es GMT +2. Ahora son las 11:41:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi