Pregunta

Ahora hay un tema que podría tomarse de muchas maneras. Espero poder desuscarlo mientras describo mi problema y empiezo a recibir sugerencias.

Estoy desarrollando un sitio que reemplazará uno existente. Históricamente, uno de los problemas que hemos tenido es que los robots araña entran y absorben todo el contenido. Ahora no nos importa que el contenido se esté descargando. De hecho, estamos contentos por ello, sin embargo, algunos de los descargadores masivos y aceleradores de descarga han resultado problemáticos con el sitio actual.

Lo que estoy buscando es algo para sentarse al comienzo de mi php que se ejecuta más o menos primero. Toma una huella digital de la solicitud de la página (ip, referencia, solicitud de uri, cookies, id de sesión, lo que sea) y la pasa a ... algo. Ese algo luego compara la huella digital con las huellas digitales en el último segundo o tres. Luego devuelve un mensaje basado en un umbral preconfigurado sobre qué hacer con la solicitud.

Algunos umbrales son:

  • El usuario ha solicitado > x páginas en los últimos 0.n segundos.
  • El usuario ha solicitado la misma página en < 0.n segundos.
  • El usuario ha enviado los datos idénticos a un formulario en los últimos n segundos.

Así que ya ves, estoy mirando algunas ventanas muy apretadas. ¿Es factible detectar tales cosas? ¿Podría hacerlo con algún tipo de archivo o fuente de datos db? Lo que sea que use para almacenar las huellas digitales entre las cargas de página va a experimentar una gran rotación ya que la mayoría de los datos se mantendrán durante un segundo o dos. ¿Debo tener algo que analice los registros de apache para verificarlo en el umbral? ¿Debería buscar algún tipo de demonio externo que contenga los datos durante un segundo o dos en la memoria a los que pueda llamar desde el script? ¿Hay algo en apache que pueda manejar esto, y solo necesito avisar al servidor para que maneje esto?

Suponiendo que esto es algo que puedo hacer en PHP o en un demonio externo llamado, ¿cómo respondo al comportamiento fuera de los umbrales? Mi instinto dice respuestas HTTP, algo así como 408 o 503, pero mi intestino a menudo está equivocado. ¿Qué puedo hacer para decirle al cliente que retroceda un poco? Una especie de & Quot; Woah allí & Quot; página?

¿Fue útil?

Otros consejos

Si no tiene para tener una solución de software, ¿por qué no programar su enrutador / firewall para que se encargue de esto? Filtrar los ataques de DOS (o su equivalente) es parte de lo que está ahí.

Prueba mod_evasive

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top