Will session_regenerate_id () senza vero parametro migliora la sicurezza? Dovrei usarlo giusto prima del login?

7

Voglio ridurre la vulnerabilità degli attacchi di fissazione delle sessioni, quindi ho usato session_regenerate_id () prima di accedere. In qualche modo sono al buio adesso e non sono sicuro della risposta giusta per le domande seguenti:

  • Quando non impostiamo il parametro function su TRUE , allora vecchi file non sarà cancellato. È assolutamente sicuro quando abbiamo accesso al vecchio sessioni? L'attaccante può utilizzare le vecchie sessioni per risolvere le sessioni?
  • Devo usare la funzione prima di accedere?

  • Devo impostare il parametro su true ?

posta ALH 27.06.2012 - 08:07
fonte

1 risposta

9

La soluzione per evitare la fissazione della sessione è semplice cambiare l'ID della sessione.

bool session_regenerate_id([bool $delOldSession = false]) sostituirà l'ID di sessione corrente con uno nuovo e manterrà le informazioni sulla sessione corrente. Aggiunta del parametro true : session_regenerate_id(true) cancella la vecchia esssion. Se non elimini le sessioni precedenti, la tua applicazione web è vulnerabile al dirottamento di sessione. Lasciate sessioni vecchie, ma ancora valide all'interno della directory / tmp. Questo significa:

  • sui server di hosting web condivisi alcune persone potrebbero ancora accedervi
  • hai più possibilità di indovinare qualsiasi ID di sessione valido

Devi sempre distruggere le vecchie sessioni con session_regenerate_id(true) o session_destroy() .

Tuttavia, dovresti essere consapevole del rendimento di session_regenerate_id(true) . Il minimo indispensabile è di usarlo, quando cambi i privilegi dell'utente (come login, logout). Quando lo usi troppo spesso, noterai cose "strane" con le tue sessioni. PHP ha restrizioni nell'accesso alla sessione per una sola attività in esecuzione. Più richieste entrano in coda. Se invii richieste a digiunare, allora:

  • La prima richiesta modifica l'ID di sessione e cancella la vecchia sessione.

  • La seconda richiesta (ancora) ha il vecchio ID di sessione e tenta di eseguire alcune operazioni su di esso.

  • Poiché questo vecchio ID sessione non esiste, viene creata la nuova sessione, che porta al logout dell'utente.
risposta data 27.06.2012 - 09:05
fonte

Leggi altre domande sui tag