Quanto è sicuro un HTTP POST?
-
06-07-2019 - |
Domanda
Un POST è abbastanza sicuro per inviare le credenziali di accesso?
O è una connessione SSL un necessario ?
Soluzione
SSL è un must. POST non è più sicuro di GET in quanto invia anche non crittografato. SSL coprirà l'intera comunicazione HTTP e crittograferà i dati HTTP inviati tra client e server.
Altri suggerimenti
<shameless plug>
Ho un post sul blog che specifica l'aspetto di una richiesta HTTP e come una richiesta GET si confronta con una richiesta POST. Per brevità, OTTIENI:
GET /?page=123 HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
e POST:
POST / HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
CRLF
page=123
(Il CRLF è solo una nuova riga)
Come puoi vedere, le uniche differenze dal punto di vista di come viene formata una richiesta * è che una richiesta POST utilizza la parola POST e che i dati del modulo vengono inviati nel corpo della richiesta rispetto all'URI. Pertanto, l'utilizzo di HTTP POST è sicurezza per oscurità. Se si desidera proteggere i dati, è necessario utilizzare SSL.
*
Da notare che sono altre differenze .
Dipende dalle circostanze, quanto costerebbe l'intercettazione delle credenziali a qualcuno?
Se si tratta solo di un accesso a un sito Q + A del software, SSL potrebbe non essere necessario, se si tratta di un sito di banking online o se si memorizzano i dati delle carte di credito, lo è.
Questa è un'azienda non una decisione tecnica.
HTTP POST non è crittografato, può essere intercettato da uno sniffer di rete, da un proxy o trapelato nei registri del server con un livello di registrazione personalizzato. Sì, POST è meglio di GET perché i dati POST non sono usualmente registrati da un proxy o da un server, ma non sono sicuri . Per proteggere una password o altri dati riservati è necessario utilizzare SSL o crittografare i dati prima di POST. Un'altra opzione sarebbe quella di utilizzare l'autenticazione Digest con il browser (vedi RFC 2617). Ricorda che la crittografia (cresciuta in casa) non è sufficiente per prevenire gli attacchi di replay, devi concatenare un nonce e altri dati (es. Realm) prima di crittografare (vedi RFC 2617 per come viene fatto in Digest Auth).
SSL è un must :)
HTTP Post viene trasmesso in testo semplice. Ad esempio, scarica e usa Fiddler per guardare il traffico HTTP. Puoi facilmente vedere l'intero post lì (o tramite un monitor del traffico di rete come WireShark)
Non è sicuro. Un POST può essere sniffato con la stessa facilità di un GET.
No ... POST non è affatto abbastanza sicuro. SSL è un must.
POST nasconde efficacemente solo i parametri nella stringa di query. Questi parametri possono ancora essere rilevati da chiunque guardi il traffico tra il browser e il punto finale.
Il modo più sicuro è di non inviare affatto le credenziali.
Se utilizzi Autenticazione digest , SSL è NON un must.
(NB: non sto insinuando che l'autenticazione Digest su HTTP sia sempre più sicura rispetto all'utilizzo di POST su HTTPS).
POST è in chiaro.
Una connessione sicura è d'obbligo.
Ecco perché si chiama connessione protetta.
No, usa SSL.
Con POST i valori vengono comunque inviati come testo normale a meno che non venga utilizzato SSL.
L'unica differenza tra HTTP GET e HTTP POST è il modo in cui i dati sono codificati. In entrambi i casi viene inviato come testo normale.
Al fine di fornire qualsiasi tipo di sicurezza per le credenziali di accesso, HTTPS è un must.
Non è necessario nemmeno un certificato costoso per fornire HTTPS. Ci sono molti fornitori che emetteranno certificati di base per circa $ 20 USD. Quelli più costosi includono la verifica dell'identità che è più una preoccupazione per i siti di e-commerce.
Una richiesta POST da sola non è sicura perché tutti i dati sono " viaggiando " in testo semplice.
È necessario SSL, per renderlo sicuro.
I dati POST vengono inviati in testo normale se si utilizza una connessione HTTP non crittografata. Se questo è abbastanza sicuro dipende dal tuo utilizzo (suggerimento: non lo è).
Se sia il server, il computer client e TUTTE LE MACCHINE TRA LORO fanno parte di una rete controllata e completamente affidabile, questo potrebbe essere ok.
Al di fuori di queste circostanze molto limitate (e talvolta anche al loro interno) l'autenticazione in testo semplice richiede problemi.
Leggi questo fantastico articolo:
Protezione contro richieste POST dannose