SQL - Error desaparecen registro

   
Vista:

Error desaparecen registro

Publicado por Mikel mzubieta@gmail.com (4 intervenciones) el 04/06/2013 21:25:30
Hola, tengo un problema que me trae de calle. Se me borran registros de la base de datos aleatoriamente. No se por donde mirarlo, por lo cual se me ocurre si se puede tener una lista de todos las accionse que se realizan en mi base de datos con fecha y hora, para sever cuando y com se realizan dichas aciones. EL problema es que solo desaparecen en los servidores donde cuelgo las paginas y no en mi ordenador en localhost. No se que hacer. Alguien sabe?

Gracias de antemano.

Mikel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error desaparecen registro

Publicado por leonardo_josue (877 intervenciones) el 04/06/2013 23:25:38
Hola Mikel... todo lo que comentas apunta a que estás sufriendo algún tipo de ataque... posiblemente con SQL Inyection o un ataque directo sobre la BD... La información de la BD no desapareces así por así.

No nos dices con qué BD estás trabajando, para poder decirte si hay alguna manera de monitorear la actividad de la BD. Por lo pronto te sugiero que hagas un respaldo de tus bd, cambies las contraseñas de la BD y que elijas contraseñas realmente seguras... igual y puedes restringir los permisos de las cuentas que estás utilizando. Revisa tus procesos y asegúrate de que están diseñados para soportar ataques de inyección de código.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error desaparecen registro

Publicado por mikel mzubieta@gmail.com (4 intervenciones) el 05/06/2013 07:11:27
Gracias por la respuesta , no conocia que existiera la posiblida de los ataques. Como los puedo evitar? Por supuesto las contraseñas las he cambiado. Agrego el codigo que uso.....

$result=mysql_query("INSERT INTO `******`.`******` (`id`, `grupo`, `tipo`, `marca`, `modelo`, `año`, `km`, `descripcion`, `foto`, `precio`, `tipodemoto`, `cilindrada`, `color`, `garantia`)
VALUES (NULL, '3', '$tipo', '$marca', '$modelo', '$ano', '$km', '$descripcion','$foto', '$precio', '$tipomoto', '$cilin', '$color', '$garantia')",$link)or die ("error" );

$result3 = mysql_query(" UPDATE `*********`.`********` SET `foto` = '$imageizena' WHERE `moto`.`id` =$id; ", $link)or die("ez dago emitzarik44");


Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error desaparecen registro

Publicado por leonardo_josue (877 intervenciones) el 05/06/2013 17:15:14
Hola de nuevo mikel:

No tengo conocimiento en PHP, por lo que no puedo asegurarte que se pueda hacer SQL inyection, aunque si funciona como creo, si, la manera en que haces tus actualizaciones es perfecta para hacer un ataque malicioso.

tomemos la variable $result3 como ejemplo... supongamos que el valor de $id es el siguiente:

$id = '1 or 1 = 1; delete from tabla; drop table lo_que_sea; #'

al hacer la concatenación te quedaría algo como esto:

UPDATE `*********`.`********` SET `foto` = '$imageizena' WHERE `moto`.`id` =1 or 1 = 1; delete from tabla; drop table lo_que_sea; #;


Es decir, tu UPDATE se convierte en tres sentencias, y no solo eso, al agregar el "or 1 = 1" estoy haciendo que se haga el update en todas los registros, no solo con el id que especifiqué...

Las opciones para prevenir esto son muchas, dependiendo del lenguaje de programación... pero usualmente se trata de utilizar SENTENCIAS PREPARADAS (aquellas donde especificas parámetros) o con procedimientos almacenados, desde la BD...

Hay mucha información en la red acerca de este tipo de ataques, checa estas ligas:

http://php.net/manual/es/security.database.sql-injection.php

http://donnierock.wordpress.com/2013/01/10/evitar-sql-injection-en-php/

http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias Islas Gonzalez

Error desaparecen registro

Publicado por Isaias Islas Gonzalez (690 intervenciones) el 05/06/2013 19:40:36
Una forma efectiva de evitar la inyección de código seria, respetar las 3 capas de desarrollo y dejar todo codigo T-SQL en la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error desaparecen registro

Publicado por mik mzubieta@gmail.com (4 intervenciones) el 05/06/2013 20:05:24
y como lo hago?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error desaparecen registro

Publicado por leonardo_josue (877 intervenciones) el 05/06/2013 20:12:13
Podrías comenzar por preguntarle a SAN GOOGLE qué es un modelo de tres capas, porque creo que no tienes idea de lo que estamos hablando...

http://es.wikipedia.org/wiki/Programaci%C3%B3n_por_capas

Si bien esta es una muy buena alternativa para evitar este tipo de ataques, no es la única, por eso te puse varias ligas en el post pasado, las cuales espero que hayas leído, y si quieres más información al respecto, prueba en esta liga:

http://lmgtfy.com/?q=c%C3%B3mo+evitar+sql+inyection

Estoy 100% seguro de que ahí encontraras algo que te sirva =P

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error desaparecen registro

Publicado por mikel mzubieta@gmail.com (4 intervenciones) el 06/06/2013 07:45:44
Gracias , me pong o a ello.. Por ahora y como solucion temporal e creado un user que no puede ni drop, ni truncate ni delete....haber si asi se me soluciona la cosa.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar