¿Cómo crear un mecanismo anti-inundación sin dejar fuera las VPN?

2

Estoy tratando de proteger mis aplicaciones de algunos bots que funcionan mal o intentan eliminar mis sitios (muchas solicitudes de las mismas IP en los registros).

Cada vez que alguien solicita una acción costosa o relacionada con la seguridad, guardo el nombre de esa acción, la IP y la fecha. Luego verifico algunos límites, por ejemplo: la acción login.fail tiene un límite de 10 intentos cada 10 minutos y 20 por hora. Si se supera el límite, guardo la prohibición y no permito más acciones desde esa IP (simplifiqué un poco la descripción).

Esto funciona bien, pero esto podría dejar fuera a los usuarios legítimos. Por ejemplo, si muchos usuarios provienen de la misma VPN y comparten la misma IP (incluso si los bots no provienen de esa IP). Y no quiero crear sitios que obstaculicen la privacidad (al prohibir las VPN) solo para estar a salvo de los robots.

No puedo comprobar si hay encabezados como el User-Agent porque se pueden falsificar.

Entonces, ¿qué puedo hacer? ¿Hay alguna forma de evitar esto? ¿Algo más que pueda verificar que no sea el IP?

    
pregunta ChocoDeveloper 25.10.2013 - 18:41
fuente

2 respuestas

4

¿Alguna vez ha considerado proteger su sitio detrás de un servicio como CloudFlare ? Actúan como un proxy inverso para su sitio y limpiarán el mal tráfico en sus nodos de borde en base a algunas heurísticas muy avanzadas. Incluso sus cuentas gratuitas ofrecen un gran nivel de protección porque les interesa eliminar el tráfico malicioso para que no pase a través de su red. No solo eso, sino que también tienen muchas características avanzadas como la minificación automática de HTML / JS / CSS, CDN, análisis y más. Escribí un blog rápido cubriéndolos después de que comencé a usarlos aquí .

    
respondido por el Scott Helme 25.10.2013 - 20:06
fuente
2

Bueno, si puede (supongo que como ha mencionado login.fail) debería relacionar las funciones con usernames / logins para que cada usuario solo pueda realizar sus funciones vigiladas X veces en una ventana de tiempo determinada.

Aparte de esto, realmente no hay nada que puedas hacer para asegurar tu aplicación, ya que la privacidad puede ser un medio eficaz para romper la seguridad.
(Porque si puedo ser completamente indistinguible de otras personas, ¿por qué no debería ir? robar bancos y hacer que la policía arreste a otra persona?)

    
respondido por el Wolfer 25.10.2013 - 19:03
fuente

Lea otras preguntas en las etiquetas