Domanda

Ora c'è un argomento che potrebbe essere preso in molti modi. Spero di riuscire a de-offuscarlo mentre descrivo il mio problema e comincio a ricevere suggerimenti.

Sto sviluppando un sito che sostituirà uno esistente. Storicamente uno dei problemi che abbiamo avuto è che i robot ragno entrano e succhiano tutto il contenuto. Ora non ci importa che il contenuto venga scaricato. In effetti, ne siamo lieti, tuttavia alcuni downloader di massa e acceleratori di download si sono dimostrati problematici con il sito attuale.

Quello che sto cercando è qualcosa da sedermi all'inizio del mio php che gira praticamente per primo. Prende un'impronta digitale della richiesta della pagina (ip, referrer, richiesta uri, cookie, ID sessione, qualunque cosa) e la passa a ... qualcosa. Quel qualcosa quindi confronta l'impronta digitale con le impronte digitali nell'ultimo secondo o tre. Quindi restituisce un messaggio basato su una soglia preconfigurata che cosa fare della richiesta.

Alcune soglie sono:

  • L'utente ha richiesto > x pagine negli ultimi 0.n secondi.
  • L'utente ha richiesto la stessa pagina in < 0.n secondi.
  • L'utente ha inviato i dati identici a un modulo negli ultimi n secondi.

Quindi vedi che sto guardando delle finestre abbastanza strette. Rilevare queste cose è anche possibile? Sarei in grado di farlo con una sorta di file o origine dati db? Qualunque cosa io usi per memorizzare le impronte digitali tra i caricamenti di pagina, si verificherà un sacco di sfocatura poiché la maggior parte dei dati verrà conservata per un secondo o due. Devo solo avere qualcosa che analizza i log di Apache per verificare la soglia? Dovrei cercare una sorta di demone esterno che contiene i dati per un secondo o due in memoria che posso chiamare dallo script? C'è qualcosa in apache in grado di gestirlo, e devo solo puntare al ragazzo del server per gestirlo?

Supponendo che questo sia qualcosa che posso fare in PHP o alcuni chiamati daemon esterni come posso rispondere al comportamento al di fuori delle soglie? Il mio istinto dice risposte HTTP, qualcosa come 408 o 503, ma il mio istinto è spesso sbagliato. Cosa posso fare per dire al client di arretrare un po '? Una sorta di & Quot; Woah lì & Quot; Pagina?

È stato utile?

Altri suggerimenti

Se non hai una soluzione software, perché non programmare il tuo router / firewall per gestirlo? Filtrare gli attacchi DOS (o il loro equivalente) fa parte del motivo per cui è lì.

Prova mod_evasive

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top