Egor Homakov ha fatto una bella recensione ( Cookie Bomb o interrompiamo il Internet ) su come bloccare i CDN e altri siti Web con i cookie.
Anche se si tratta di un DOS lato utente / browser, mi chiedo come si fermerebbe questo sul lato server.
Egor Homakov ha fatto una bella recensione ( Cookie Bomb o interrompiamo il Internet ) su come bloccare i CDN e altri siti Web con i cookie.
Anche se si tratta di un DOS lato utente / browser, mi chiedo come si fermerebbe questo sul lato server.
La maggior parte dei browser ha un limite al numero di cookie che verranno archiviati per un singolo TLD. Pertanto, se il server è configurato per consentire una richiesta sufficientemente ampia da includere tutti questi cookie, le richieste non verranno più rifiutate. Apache ha opzioni come LimitRequestFields
, LimitRequestFieldSize
, ecc. L'impostazione di queste dimensioni sufficientemente elevate dovrebbe consentire la richiesta di essere elaborata con tutti i cookie aggiunti da un attacco, anche se a un costo di memoria e tempo di elaborazione.
Naturalmente, se controlli l'intero dominio, ci sono altre possibili attenuazioni,
poiché richiede che un utente malintenzionato sia in grado di creare contenuti che impostano cookie su *.targetdomain.com
, è possibile sfruttarlo solo con contenuti controllati dagli autori di attacchi su quel dominio. Quindi se gli autori di attacchi non sono autorizzati a creare script sul lato server (ad esempio, qualsiasi cosa possa inviare Set-Cookie) o creare JavaScript (che può impostare i cookie tramite document.cookie), allora si sarebbe vulnerabili. Quindi, chiaramente, la mitigazione non consente agli utenti di creare contenuti su quei domini.
Davvero non puoi
Il problema è che i cookie sono lato client e ci sono solo due metodi per risolvere il problema: ignora / accetta i cookie o li elimina.
Il primo è probabilmente più facile del secondo, ma non lo consiglierei. C'è un motivo per tenere piccoli i cookie - non sono il pasto completo. (Perché mai un server vuole accettare un'intestazione del cookie da mezzo megabyte ...? La maggior parte delle pagine web sono solo 2MB o giù di lì.) Quindi, sì, puoi ignorare o accettare qualsiasi intestazione di dimensione che il client ti manda, ma è male pratica.
Potresti eliminare i cookie con il tuo JS, ma ciò è possibile solo se conosci il nome, il dominio e il percorso del cookie. E mentre potresti essere in grado di cancellare tutti i cookie per il tuo dominio, dovresti incontrare due problemi: ( 1 ) rimuovi tutti i tuoi altri cookie, a meno che tu non abbia alcuni veramente buoni JavaScript, e ( 2 ) rimuova solo i cookie per il tuo dominio - mancano gli altri siti bloccati.
modifica: leggi la risposta di David perché accenna a non lasciare che gli utenti scrivano JS personalizzati per il tuo sito che ho saltato.
Buone letture: Massimo sui valori dell'intestazione http e Come posso eliminare tutti i cookie con JavaScript?
Leggi altre domande sui tag apache cookies nginx denial-of-service