L'autenticazione di base, inclusi i token bearer, dipendono dall'uso di TLS per impedire agli intercettatori di ottenere credenziali o token sensibili. Ma penso che ci sia un elefante nella stanza di cui nessuno parla.
Gli utenti spesso digitano solo "www.somesite.com" invece di " link ". AFAIK quando non si specifica il protocollo, il browser client prima tenterà la connessione HTTP predefinita e non crittografata.
Il problema è che l'utente chiede in sostanza una connessione non crittografata al server perché è quella predefinita quando non viene specificato alcun protocollo. Il browser potrebbe potenzialmente includere informazioni sensibili nelle intestazioni delle richieste, incluse le credenziali di autenticazione di base, i token (e anche i cookie che non sono impostati su "Secure")
Per i client API che inviano token la situazione è simile, ma parzialmente attenuata dalle applicazioni client, fortunatamente ben scritte, che
- Effettivamente utilizza solo la porta crittografata SSL a cui connettersi e
- Lo sviluppatore ha effettivamente attivato il "Verifica il certificato SSL" opzione prima di pubblicare la propria app.
Ho intenzione di configurare un proxy MITM sulla mia rete domestica per avviare il controllo e la registrazione delle app che uso. In particolare, voglio spoofare alcuni record DNS e vedere se le app in realtà riescono a inviare credenziali / token al server sbagliato.
Personalmente avrei preferito che JWT fosse specificato come inviato solo in un cookie SECURE, piuttosto che nelle intestazioni ... Qualcuno qui pensa che la mia preoccupazione non sia giustificata?
EDIT: Per chiarire: non sono così preoccupato dalla debolezza di SSL o attacchi contro DNS, sono più preoccupato per le credenziali esposte perché i client finiscono per inviarlo su connessioni non criptate in ogni caso, sia a causa di cattivo comportamento o perché il client segue semplicemente i reindirizzamenti alle porte SSL ma solo dopo aver inviato le credenziali dell'utente. Quando creerò le API, d'ora in poi aggiungerò un listener sulla porta non criptata. Se riceve alcun token su quella porta, sarà
- Non reindirizza e
- annulla le credenziali e
- invia all'utente un avviso.
Speriamo che gli sviluppatori che scrivono app che consumano queste API avranno il suggerimento. La lista nera dell'IP per poche ore sarebbe troppo dura?
P.S. Nota: con i cookie di sicurezza dipendiamo ancora dal corretto utilizzo del browser.