E 'possibile vedere se uno script su un sito web ruba i cookie di sessione?

3

Sto cercando alcune soluzioni di analisi dei dati web, so che sembra paranoico.
ma l'analisi dei dati basata sui cookie richiede di incollare il codice JavaScript sul tuo sito web.

Non mi piace l'idea di incollare script sul mio sito web che non conosco.
Quindi voglio controllare se questi script inviano ad un altro server i cookie di sessione degli utenti del mio sito web .

Alcuni dei modi in cui sono:

  1. Usa firebug per vedere tutte le richieste fatte - il problema è che lo script potrebbe crittografare i cookie in qualche modo quindi non vedrò i cookie come testo in chiaro.

  2. Cerca il codice JavaScript per termini come "document.cookie"

Cosa ne pensi?
E impostando il cookie di sessione su HttpOnly disabiliterai completamente questo?

Grazie in anticipo.

    
posta fiftyeight 24.08.2011 - 21:14
fonte

5 risposte

6

Penso che i tuoi locali non ottengano l'intero problema:

  • Lo script che incorpori da fonti esterne può essere modificato in un secondo momento.
  • Rubare il cookie di sessione è solo un modo semplice per sfruttare la vulnerabilità XSS. Invece di rubare il cookie e usarlo da un altro computer per fare cose maligne, lo script dannoso può fare direttamente quelle cose senza rafforzare il cookie. Questo ha una serie di vantaggi dal punto di vista degli attaccanti:

    1. Funziona con il flag HttpOnly poiché lo script invia semplicemente la richiesta utilizzando i normali mezzi del browser, come ad esempio l'invio di un modulo. Questo può essere fatto in un iframe nascosto
    2. Non rivela l'indirizzo IP dell'utente malintenzionato sul server. Ciò è particolarmente vero nel contesto degli attacchi XSS riflettenti.
    3. Funziona con meccanismi di autenticazione aggiuntivi come l'autenticazione di base http o l'associazione della sessione con l'indirizzo IP del client.
risposta data 24.08.2011 - 21:49
fonte
2

Potresti effettivamente rilevarlo sovrascrivendo il cookie getter usando __definegetter__:

document.__defineGetter__("cookie", function() { /*report stolen */ });

Tuttavia questo può essere annullato dal javascript in questione usando:

delete document.cookie;

prima di provare ad accedervi.

In ECMASCRIPT 5, il nuovo standard javascript, puoi effettivamente sovrascriverlo in un modo che non può essere annullato.

Object.defineProperty(document, "cookie", { get: function() { /* report stolen */ }, set: function() { }, configurable: false })

Il flag configurabile rende impossibile lo script caricato in seguito nella pagina per sovrascrivere o eliminare.

Anche se come menzionato in altre risposte, lo script può fare qualsiasi cosa per conto dell'utente (CSRF), quindi non sono sicuro che questo ti porterà ovunque.

    
risposta data 17.09.2011 - 13:14
fonte
1

Prima di tutto - sì, i cookie delle impostazioni come Http Only impediranno a qualsiasi codice JavaScript di accedere ai tuoi cookie nei browser più utilizzati.

Puoi cercare lo script per document.cookie, ma può essere offuscato e non puoi essere sicuro se pensi a tutti i modi in cui l'utente malintenzionato può accedere ai cookie. Un esempio potrebbe essere:

var a="cookie", b;
for(c in document) {
    if(c == a) b = document[c];
}
alert(b);

Sono sicuro che ci sono altri modi per nascondere la tua intenzione, quando provi ad attaccare la pagina web. Informazioni sull'ispezione delle richieste: potrebbe essere interessante vedere cosa sta succedendo, ma come hai affermato, i parametri della richiesta possono essere crittografati e dovrai decodificare l'algoritmo di crittografia dal codice JavaScript di terze parti, il che potrebbe richiedere molto tempo.

    
risposta data 24.08.2011 - 21:39
fonte
1

A meno che stiano facendo molta attenzione, puoi imparare dall'analisi del traffico.

Crea una versione della pagina con x kB di cookie e osserva che inviano messaggi per un totale di kB.

Crea una versione della pagina che sia la stessa sotto tutti gli aspetti, ma che abbia x 'kB di cookie dove x' è significativamente più grande di x ma comunque all'interno dell'intervallo di cookie che una pagina normale potrebbe avere. Osserva che inviano messaggi per un totale di y 'kB.

Se y è abbastanza diverso da y 'allora dovresti essere molto sospettoso.

And will setting the session cookie to HttpOnly completely disable this?

Sì, sui browser che supportano it.

    
risposta data 24.08.2011 - 21:39
fonte
-1

Se si collega un debugger a document.cookie e si guardano le eventuali chiamate, è possibile vedere tutto ciò che lo script fa con detti cookie.

L'impostazione del cookie di sessione su HttpOnly impedirebbe ai nuovi browser di passare il cookie a javascript, ma i browser più vecchi non comprendono HttpOnly.

    
risposta data 24.08.2011 - 21:28
fonte

Leggi altre domande sui tag