Esiste un meccanismo per consentire l'autenticazione sicura su HTTP senza SSL o TLS, ma è usato raramente e non è ancora buono come HTTPS. Fondamentalmente, si tratta di una misura di sicurezza semi-assed di interesse storico che non ha mai preso piede, e in ogni caso dovresti usare solo HTTPS. Ma dal momento che hai chiesto ......
Il protocollo HTTP supporta due meccanismi di autenticazione: Basic e Digest Access Authentication, entrambi descritti in RFC 2617 . Questi sono meccanismi che fanno sì che il browser stesso mostri una finestra di dialogo di autenticazione , non incorporata in il contenuto della pagina. L'autenticazione di base, che a volte viene utilizzata, non è molto meglio della trasmissione in chiaro.
Il meccanismo Digest, tuttavia, è un protocollo challenge-response. Il server invia una richiesta contenente un nonce (una stringa casuale). Il cliente deve riemettere la richiesta con una risposta che è una funzione hash del nonce e della password (ma non la password stessa).
Ci sono alcuni avvertimenti significativi:
- Il server solitamente memorizza la password in chiaro (o una versione equivalente in testo non crittografato) per essere in grado di verificare la sfida. Ciò non è auspicabile, poiché le best practice impongono di archiviare solo gli hash delle password salate. (@utente2829759 sottolinea che il server potrebbe anche memorizzare l'hash MD5 di (username: realm: password) .
- Il meccanismo Digest utilizza MD5, che è considerato un algoritmo di hash insicuro in questi giorni. A differenza di SSL / TLS, non esiste una negoziazione algoritmica tra client e server.
- Non c'è alcuna verifica dell'identità del server. Lo spoofing è possibile, così come gli attacchi man-in-the-middle. L'unica cosa che Digest Authentication è in grado di proteggere è la password stessa - il che non è così utile come si potrebbe pensare.
In Apache, il supporto per l'autenticazione del digest è fornito da mod_auth_digest .
Una lezione che si può trarre da questo pezzo di curiosità è che un hack basato su JavaScript potrebbe soffrire degli stessi punti deboli. Se hai bisogno di sicurezza, usa HTTPS!