Usando GET per inserire nome utente / password? [duplicare]

4

Da quanto ho capito usando GET per inviare nomi utente / password è un problema di sicurezza perché il nome utente / password fanno parte dell'URL che può essere visualizzato nella cronologia del browser.

Questo problema è ancora presente se la richiesta GET di accesso viene effettuata utilizzando AJAX?

    
posta Abe Miessler 07.10.2013 - 18:29
fonte

3 risposte

6

From what I understand using GET to submit usernames/passwords is a security issue because the username/password are part of the URL which can show up in browser history.

Questo non è l'unico problema. L'utilizzo di GET per le situazioni in cui l'utente invia dati apre la tua applicazione alle vulnerabilità CSRF .

Ad esempio, potrei incorporare <img src="http://yoursite.com/login?username=something&password=somethingelse"> , che potrebbe registrare visitatori sul mio sito dal tuo sito a causa della chiamata al gestore di accesso. Questo specifico esempio dipende dall'implementazione, ma possono essere fatti altri attacchi. Potrebbero esserci casi in cui un utente malintenzionato chiede agli utenti di accedere al proprio account.

Oltre a ciò, altri logger in arrivo (il tuo ISP, ecc.) possono registrarlo per un lungo periodo di tempo. Naturalmente, lo stesso si può dire della richiesta POST, ma di solito i dump di richiesta completi non verranno conservati a lungo.

    
risposta data 07.10.2013 - 18:45
fonte
2

Sì, è sicuramente ancora un problema. La cronologia del browser non è l'unico posto in cui è possibile registrare i parametri dell'URL, ma è probabile che il server li registri e che anche i proxy intermedi possano registrarli.

I dati sensibili come le credenziali dell'utente devono essere POST come dati del modulo, non passati in querystring.

    
risposta data 07.10.2013 - 18:38
fonte
1

Le richieste GET (per definizione del protocollo) devono essere " idempotent ", che significa senza effetti collaterali. In questo caso, cambiare lo stato della sessione in "loggato" anziché "non connesso" è un esempio di effetto collaterale.

Molto sul modo in cui i browser, i server e i proxy lavorano si basano su questo principio del GET che non ha effetti collaterali, quindi violare questo principio significa che potresti incorrere in problemi difficili da diagnosticare lungo la strada.

Usa sempre il POST quando ciò che fai cambia lo stato di qualcosa, anche se in realtà non hai alcun dato su POST. Fallo e basta.

    
risposta data 07.10.2013 - 20:17
fonte

Leggi altre domande sui tag