Pregunta

Estoy desarrollando un sitio de un banco de imágenes que contendrá imágenes libres de derechos para su descarga. Quiero frenar cualquier persona que utilice un bot o que se está descargando demasiado a menudo, por lo que tener un límite de archivo diario y he incorporado un sueño variable en el script que entrega los archivos. Hago que al escribir el tiempo de finalización de la última descarga de una base de datos, a continuación, comprobar el tiempo transcurrido cuando comienza la siguiente descarga. Si que es menor que N segundos entonces retrasan la descarga por M segundos, duplicando M sobre infracciones sucesivas. Eso funciona bien hasta que el guión golpea límite de tiempo de ejecución del servidor.

Mi empresa de alojamiento confirma que el tiempo de sueño es puntuable para el tiempo de ejecución.

¿Estoy siendo demasiado prudente en la etapa de desarrollo?

¿Alguna sugerencia sobre cómo detectar y frenar los usuarios que abusan del sitio sin necesidad de utilizar php sueño?

¿Fue útil?

Solución

No creo que estás siendo demasiado prudente, pero I lo pensar que esto es una mala manera de ser cauteloso. Si el tiempo de sueño en cuenta para calcular el tiempo de ejecución, no estás pagando por eso? Probablemente también cuenta para el uso de CPU y un montón de otros factores de costo también. Además, asfixia lentamente fuera del servicio no dar a su usuario una indicación de que están haciendo algo mal, sólo hace que su servicio parece lento.

probablemente sería mejor servir a un mensaje de imagen amigable dejar que la persona sepa lo que está pasando para que puedan modificar su comportamiento (esto es especialmente bueno teniendo en cuenta que algunas personas podrían desencadenar por accidente en el desempeño de actividades completamente inocentes). Si insisten en servir a su mensaje de imágenes más de cinco o diez veces, entonces es definitivamente una secuencia de comandos, por lo que sólo deja de responder a sus peticiones por completo.

Otros consejos

¿Por qué no sólo tiene que hacer el usuario consciente de lo que él / ella está haciendo "mal" y mostrar un error?

De esta manera, el usuario sabrá lo que está pasando y podría decidir corregir el comportamiento. Con retrasos aleatorios, sospecharía algo mal con su servidor y tal vez sólo tiene que buscar una oferta competidora que funciona más estable.

Utilice un div con un contador de tiempo y poner en práctica este mecanismo vez en javascript.example: (www.rapidshare.com) Si el tiempo de sueño se cuenta como tiempo de ejecución, que significa que tiene una muy alta probabilidad de cruzar el tiempo de ejecución límite.

Si cualquier retraso es mucho más largo que el tiempo de espera de la ejecución del script, es posible que desee bloquear ese usuario en su totalidad durante un cierto período de tiempo (24 horas?).

¿Cómo estás decidiendo exactamente quién está descargando de forma agresiva? La dirección IP no es fiable al 100%, ya que es posible que tenga un número de personas detrás de NAT que todos parecen provenir de la misma dirección IP.

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