Come prevenire le bombe sui cookie?

1

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.

    
posta that guy from over there 21.07.2014 - 08:00
fonte

2 risposte

2

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.

    
risposta data 21.07.2014 - 08:31
fonte
2

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?

    
risposta data 21.07.2014 - 08:37
fonte

Leggi altre domande sui tag