Autenticazione di base su HTTP reindirizzato a HTTPS: perde?

1

Sto creando un'API Flask e non conosco le superfici di attacco esistenti nel reindirizzamento da HTTP a HTTPS, o richiedendo HTTP quando l'intestazione HSTS è stata inviata in precedenza.

Diciamo che un utente richiede il percorso user@pass:<url>/ping su HTTP. Possono essere:

  • Reindirizzato a HTTPS, non rendendosi necessariamente conto che le loro richieste HTTP vengono sempre reindirizzate, il che significa che possono continuare a farlo.
  • Bloccato. Tutti i tentativi di HTTP sono serviti con una risposta "proibita" di qualche tipo. Si renderanno conto, poiché non possono accedere all'endpoint, ma suppongo che i dati inviati siano ancora rivelati.

Se un utente invia una richiesta con l'intestazione di autenticazione di base su HTTP e viene reindirizzato a HTTPS, sia come riscrittura o con HSTS in posizione, le informazioni non sono ancora state rivelate?

Se è così, immagino che bloccare l'HTTP sarebbe un modo più efficace per dire all'utente di smettere di richiedere la rotta HTTP. Il reindirizzamento potrebbe non causarne mai l'interruzione effettiva dell'utilizzo di HTTP per la richiesta iniziale.

Ho la sensazione che potrei fraintendere alcune funzionalità del reindirizzamento che conserva ancora la sicurezza dei dati inviati ...?

    
posta TragedyStruck 25.06.2018 - 13:41
fonte

2 risposte

2

If a user sends a request with Basic Authentication header over HTTP, and it gets redirected to HTTPS, either as a rewrite or with HSTS in place, hasn't the information still been revealed?

Se la richiesta viene reindirizzata su HTTPS (utilizzando una risposta 30x e un'intestazione Location), le informazioni di autenticazione sono già state inviate in chiaro sul cavo.

Se HSTS è abilitato, la connessione HTTP non verrà effettuata e le credenziali di autenticazione verranno inviate immediatamente tramite HTTPS. Questo perché Strict Transport Security dice al browser di connettersi direttamente su HTTPS.

Nota che HSTS è affidabile al primo utilizzo e può scadere, quindi non è una protezione assolutamente impermeabile.

    
risposta data 25.06.2018 - 15:17
fonte
1

Se l'url / destinazione in cui i dati vengono inviati per primi è HTTP, viene esposto in forma base64 (quale autenticazione di base usa). Il reindirizzamento passa a HTTP sul pallone poi su HTTPS, quindi è chiaro prima del reindirizzamento.

Ora, se la tua app di flask utilizza ssl e hai il reindirizzamento prima di richiedere l'autenticazione di base, staresti bene.

    
risposta data 25.06.2018 - 14:37
fonte

Leggi altre domande sui tag