Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Inyeccion SQL (https://www.clubdelphi.com/foros/showthread.php?t=78460)

RebeccaGL 21-04-2012 17:07:01

Inyeccion SQL
 
Buenas,

Tengo un sistema al que se le borran los registros sin que nadie haga nada, por ej. a un cliente se le desaparecieron dos dias de registro de datos y segun el nadie borro esos registros, he averiguado algo y la net y dice que puede ser una inyeccion sql tengo mi usuario con password al root tambien le he puesto password, y aun asi, los registros a veces desaparecen solos, que puedo hacer.



Saludos

look 21-04-2012 17:17:44

probablemente tu problema este en las transacciones. en una ocasion encontre ese comportamiento en el sistema de un amigo y el problema venia porque no tenia bien establecida las transacciones, el decia que se le perdia informacion de dias y el problema era que en todo el dia la aplicacion no hacia el commit para cofirmar los datos , este comportamiento era esporadico ya que con cerrar la aplicacion se hacia el respectivo commit al perder la conexion pero habia ocaciones en las que habia un fallo de energia y la computadora se apagaba etonces se perdia la info.

Saludos!

RebeccaGL 21-04-2012 17:29:07

look gracias por responder, he hecho pruebas de meter algunos registros al sistema y luego he apagado la pc, reinicie y los datos estaban ahi, no se perdieron inlcluso metia datos y con ctrl+alt+del sacaba mi programa de memoria repentinamente y los datos no se perdian, la verdad no se quisas tengas razon, pero a cada registro ingresado le hago un post estoy usando componentes zeos para usar las tablas

look 21-04-2012 17:46:22

Cita:

Empezado por connor (Mensaje 430616)
look gracias por responder, he hecho pruebas de meter algunos registros al sistema y luego he apagado la pc, reinicie y los datos estaban ahi, no se perdieron inlcluso metia datos y con ctrl+alt+del sacaba mi programa de memoria repentinamente y los datos no se perdian, la verdad no se quisas tengas razon, pero a cada registro ingresado le hago un post estoy usando componentes zeos para usar las tablas

te recomiendo que metas todos los cambios que haces en la base de datos con transacciones es decir un starttransaction con su respectivo commit, despues de hacer esto prueba el comportamiento del programa para ver si con esto se soluciona

RebeccaGL 22-04-2012 01:36:30

Holas de nuevo

El StartTransaction y el Commit iria en el evento Query.AfterPost, asi tendria que ser?.

Y poner en el componente ZConecction.AutoCommit := True, no seria lo mismo??


Saludos

ecfisa 22-04-2012 02:33:31

Hola connor.

¿ Hiciste la prueba de poner el autocommit en falso y realizar el Commit/CommitRetaining manualmente como te sugirió el amigo look ?

No utilizo Zeos pero aquí , mencionan un problema similar que se solucionó de ese modo.

Saludos.

AzidRain 23-04-2012 16:47:53

Si las tablas no son InnoDb no tiene ningún efecto usar transacciones. MySQL por default crea todas las tablas con el motor MyISAM que no es transaccional. Por otro lado si nunca abres una transaccion, cualquier cambio se graba de inmediato tan pronto hagas un POST.

RebeccaGL 23-04-2012 20:11:11

Buenas,

Es verdad no habro ninguna transaccion solo hago POST pero un dia un cliente (usuario) me dijo que digito dos dias martes y miercoles, viene el viernes enciende la pc y los dias en los que registro algunas ventas, osea martes y miercoles no estaban habian desaparecido todos las ventas de esos dias, aclaro cada vez que el operador registra una nueva venta el programa hace POST, incluso cuando se salta de campo en campo el programa hace POST, lo que no me queda claro es como desaparecen los registros sion que nadie los borre?? yo he llegado a una conclusion que mi porgrama esta siendo saboteado por terceros, por medio de inyecciones sql porque he hecho pruebas ingresando registros mas de 20 y apagando la pc reseteando la pc y no se borran por nada de nada es raro esto, ojala de con la solucion lo de la ayuda de las transacciones agradesco mucho por responder pero creo que el problema esta en que sabotean mi programa, algunas personas que quisas deseen desprestigiarme y vender el suyo propio a la empresa que yo le vendi mi porgrama

Ah me olvidaba si uso el motor inmodb

Saludos, gracias por responder.

Casimiro Notevi 23-04-2012 20:53:15

¿Y cómo hacen esa inyección sql?, ¿no será más fácil borrar directamente los datos?
Yo me quedaría un día entero junto al cliente y lo vería de trabajar, a ver si hace algo raro, no sé, apagar el ordenador sin salir del programa, por ejemplo.

RebeccaGL 29-04-2012 14:59:42

Si casimiro es verdad quedarse mas rato con el digitador, pero resulta que para eso tendria que viajar por lo menos 1000 kilometros desde mi ciudad y no voy a estar viajando cada rato que un pendejo se le ocurra borrar los registros, otra cosa creo que tienes razon los registros los borran directamente porque pienso que seria imposible que se borren solos, ahora resulta que mi cliente se compro otro programa y el que saboteo mi programa salio con su gusto de joderme.


Saludos

roman 30-04-2012 18:15:43

MySQL puede llevar un registor de todas las consultas que modifican algo en la base de datos (INSERT, DELETE, UPDATE, etc.) Si está activado, deberás encontrar unos DELETE que no deberpian de estar y de ahí partir para ver si alguine está haciendo cosas raras.

// Saludos


La franja horaria es GMT +2. Ahora son las 14:30:02.

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