Foros del Web » Programando para Internet » PHP »

me atacaron el sitio? MySQL creo muchas filas erroneas

Estas en el tema de me atacaron el sitio? MySQL creo muchas filas erroneas en el foro de PHP en Foros del Web. Hola, bueno les cuento mi problema espero ser claro Resulta que tengo un sitio, y una de las páginas se accede con una url parecida ...
  #1 (permalink)  
Antiguo 22/09/2011, 08:09
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Desacuerdo me atacaron el sitio? MySQL creo muchas filas erroneas

Hola, bueno les cuento mi problema espero ser claro

Resulta que tengo un sitio, y una de las páginas se accede con una url parecida a esto: ...php?op=608&id=XXXX

La id=XXXX corresponde a algo asi como un articulo, una nota.
El tema es que en MySQL tengo una tabla que va guardando una fila cada vez que alguien solicita el op=608 y guarda el ID que solicitan.

Ej de tabla:
OP | 608
ID | 9886
STAMP | 16519684354
(y asi UNA fila x cada visita qe entra)

El tema es que ayer, revisando la tabla para hacer una estadisticas, encontre que habia cerca de 1000 visitas con ID's solicitadas DISTINTAS y algunas con caracteres raros y cosas asi... Osea ID's de articulos que ni siquiera existen y de hecho el codigo PHP tiene un END cuando solicitan una ID que no exista en la tabla de articulos, con lo cual no deberia contar la visita pero lo hace de todas formas.. Es raro.

El código siempre funcionó bien, hasta ayer que encontré esto.
Ejemplos de ID's solicitadas (y que el sistema procesó):
25¼39, 2337†R, 1950¼, 2}f ·|¸ôi˜6, 2Date†R539, 1FON†R402

Puede ser algun tipo de ataque?
Me explique bien?
Pueden ayudarme?

GRACIAS (estoy preocupado =()

PD: El sitio esta alojado en Dattatec.com
  #2 (permalink)  
Antiguo 22/09/2011, 08:55
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: me atacaron el sitio? MySQL creo muchas filas erroneas

Depende de a qué altura tengas el end del script. Si lo tienes después de la inserción, no te vale para nada.

De todas formas, probablemente sea un ataque por saturación que se suele hacer contra páginas en cuya URL van datos de la aplicación, como tu id, por ejemplo. Te doy algún consejillo para que lo arregles:
- En primer lugar, intenta utilizar la URL lo mínimo posible para paso de parámetros. Puedes utilizar $_SESSION o $_POST si en la página anterior tienes un formulario.
- En caso de que no tengas otra opción y tengas que usar $_GET hazlo siempre para consulta de la base de datos, no para modificación o inserción. Es decir, tienes la típica URL datos_usuario?id=XXX, pero esta página sólo hace una consulta a la base de datos, no la modifica, lo peor que te puede pasar es que no aparezcan datos, pero no se podrá alterar el contenido de la base de datos.
- Otra opción para poder pasar parámetros por URL, son las URL amigables. La idea es que conviertes una URL del tipo datos_usuario?id=200 en datos_usuario/200. Así, por lo menos, no viene el nombre del parámetro y despista un poco. Busca sobre URLs amigables y sobre .htaccess.

Espero que te valga alguno de los consejos, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 22/09/2011, 09:14
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: me atacaron el sitio? MySQL creo muchas filas erroneas

Muchas gracias por la respuesta!
Lo rasisisisisimo es eso.. el END esta mucho antes del include (el include llama al archivo que hace la inserción en la tabla de visitas)...
De hecho intenté ingresar yo una URL con un ID que no existiera, o con esos mismos "RAROS" que encontré y no pude.
Hizo el END, mostró el mensaje de ERROR correspondiente y NO guardo mi visita.

Tampoco puede solicitar el archivo que hace la insercion de manera aislada: primero porque deberia adivinar en que carpeta está, el nombre del archivo, las variables... Y ademas el archivo independiente NO llama a la funcion que conecta a la BD, asique no funciona si no esta dentro del archivo accesible por el usuario.

No entiendo qué, quién o cómo lo hizo. Estoy desconcertado Y PREOCUPADO :(

Voy a revisar el código a ver si puedo evitar el uso de la URL, o agregarle más seguridad de alguna forma, pero la verdad no se como hizo eso... Yo siendo el programador del sitio entero no puedo hacerlo, sabiendo los nombres de las variables, etc (Igual no significa nada eso :P)

Sino se me ocurre usar sesiones e ir guardando el historial del visitante dentro del sitio, y dependiendo de qué página venga mostrar o no el contenido.

Imaginate que POST no puedo usar, porque llega al artículo navegando por el sitio, como si fuera este foro... Uno no puede entrar al POST si no es por link o porque viene navegando los temas...

Hay alguna manera de limitar la cantidad de páginas que visita un usuario/IP?
Sobre todo en relación al tiempo, por ejemplo si un visitante visita 40 paginas en 1 minuto es bastante sospechoso... Bloquearlo un rato, no se.. Alguna idea?

GRACIAS!!!

Última edición por felpuli; 22/09/2011 a las 09:20

Etiquetas: ddos, filas, mysql, seguridad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:00.