Mitigazione del dirottamento della sessione

3

Vorrei ridurre la probabilità di un dirottamento di sessione implementando una soluzione di token basata su cookie.

L'idea è di generare un hash SHA256 basato su informazioni correlate al cliente come:

PHP

$_SERVER['HTTP_USER_AGENT']

JavaScript:

function gatherUserData(){
    return ["time_zone", (new Date()).getTimezoneOffset()/60, "history_length", history.length, "browser_name",
        navigator.appName, "browser_engine", navigator.product, "browser_language", navigator.language,
        "screen_width", screen.width, "screen_height", screen.height];
}

Ogni volta che il client richiede una pagina, sfido il suo token ricalcolandolo.

Credo che sia molto improbabile che un hacker abbia tutte queste informazioni e, anche se ce l'ha, lo renderebbe un po 'più difficile.

Aiuta a prevenire il dirottamento di sessione?
Raccomandi altre tecniche?

    
posta Bob 16.04.2017 - 18:29
fonte

2 risposte

5

Ciò sarebbe efficace contro il dirottamento di sessione. Scarterebbe anche gli utenti quando ridimensionano la finestra del browser o quando aggiornano il browser.

Il modo migliore per prevenire il dirottamento di sessione è quello di associare le sessioni agli indirizzi IP. Inoltre, dovresti agire quando rilevi una sessione dirottata, quindi quando due indirizzi IP utilizzano lo stesso identificatore di sessione.

In futuro, puoi impedire il dirottamento di sessione associando i cookie alle connessioni TLS utilizzando Token Binding over HTTP .

Modifica: vedi Perché non ci sono sessioni esclusive per un Indirizzo IP? per alcuni svantaggi delle sessioni di associazione agli indirizzi IP.

    
risposta data 16.04.2017 - 18:37
fonte
2

Quindi, guardando questo problema, devi considerare il furto di sessioni come un attacco nel contesto della tua applicazione.

Solitamente gli attacchi di furto di sessione sono mirati piuttosto che generici poiché una volta che la sessione è stata rubata, l'attaccante deve fare qualcosa con esso, quindi le protezioni che sono parzialmente sul lato client non sono troppo grandi in quanto l'attaccante può probabilmente decodificare ciò che si è " re su e bypassare la protezione.

In generale, il modo migliore per ridurre il rischio di dirottamento di sessione è ridurre la capacità dell'aggressore di accedere al cookie di sessione utilizzato dal sito.

quindi cose come

  • Revisione di XSS
  • Impostazione dei flag dei cookie come HTTPOnly e secure
  • Limitazione del tempo in cui il token è valido per
  • Garantire che la disconnessione dell'applicazione termini correttamente la sessione
  • Garantire una buona configurazione SSL per ridurre i rischi di sniffing del traffico

sono utili per ridurre i rischi. Inoltre, come dice @sjoerd, è possibile legare il token a un indirizzo IP di origine, ma ciò può essere un po 'rischioso se i client si trovano dietro server proxy bilanciati in carico in cui le loro richieste potrebbero provenire da indirizzi IP diversi durante una singola sessione.

Il suggerimento nella tua domanda è probabilmente un po 'fragile e se un utente malintenzionato può accedere al browser dell'utente (che probabilmente è necessario, per rubare i token di sessione in primo luogo) può accedere a tutte le informazioni che hai stai usando per creare il token in primo luogo e passare quello a te, ignorando la protezione.

    
risposta data 16.04.2017 - 20:44
fonte

Leggi altre domande sui tag