L'intestazione Origin è davvero utile per proteggere un WebSocket?

4

Ho letto alcuni post sulla sicurezza WebSockets e alcuni di loro menzionano di usare l'intestazione Origin per aiutare a proteggere la connessione. Ad esempio questo link .

Tuttavia, sono davvero dubbioso sui benefici che fornirà. Perché dovrei usare l'intestazione Origin? O meglio, come potrei usare l'intestazione Origin per qualcosa di utile?

    
posta yzT 25.02.2016 - 10:34
fonte

2 risposte

6

Controllare l'intestazione Origin impedisce che un WebSocket venga utilizzato da un altro sito web che l'utente sta visitando (ad es. per estrarre i dati).

Come per il link :

WebSockets are not restrained by the same-origin policy

Questo perché la richiesta di upgrade del protocollo avrà accesso ai cookie dell'utente, quindi se non stai controllando l'origine la richiesta potrebbe essere stata fatta da example.com e non dal tuo sito example.net .

es. se si dispone di un servizio WebSocket che restituisce alcuni dati privati, non si desidera un sito dannoso che l'utente ha aperto dalla lettura dei dati dal proprio perché l'utente ha effettuato l'accesso.

Non ha nulla a che fare con l'interruzione di un altro sito web dall'applicare contenuti dal tuo sito web - se volessero farlo, imposterebbero semplicemente una connessione al tuo servizio web socket dal loro back-end, dove possono impostare qualsiasi intestazione Origin loro vogliono. Selezionando l'intestazione Origin si interromperà questo per i contenuti autenticati perché non possono ottenere il loro back-end per fornire il cookie di autenticazione dell'utente al tuo servizio web.

Potrebbero naturalmente registrare un utente e quindi inviare il cookie di autenticazione per quello utilizzando il loro client HTTP back-end. Tuttavia, gli unici dati a cui accedono sono i loro, non quelli dell'utente finale. Potresti rilevare se determinati nomi utente o IP remoti stanno scaricando un sacco di contenuti pubblici al fine di impedire l'utilizzo di funzionalità nel tuo servizio che potrebbero non essere specifiche dell'utente.

    
risposta data 25.02.2016 - 16:13
fonte
1

L'intestazione Origin ti consente di impedire ad un altro sito web di esporre il tuo servizio web-socket ai loro utenti.

Supponiamo che tu costruisca un'applicazione web che consiste in un client HTML + Javascript relativamente poco interessante su www.example.net che riceve dati dal tuo backend server molto più eccitante tramite websocket su ws.example.net .

Ora qualcun altro crea un proprio sito web www.example.com che clona il tuo lato html + javascript, ma continua a collegarsi a ws.example.net . In questo modo traggono vantaggio dal back-end del server facendo sì che i loro utenti si dedicino alla capacità del server e ai dati senza la tua autorizzazione. Non ti piace.

Che cosa puoi fare?

Tutte le connessioni web socket dagli utenti dell'altro sito web avranno Origin:example.com mentre quelle del tuo sito web hanno Origin:example.net . Ciò ti consente di accettare solo le connessioni dai tuoi visitatori.

Ma ricorda che l'intestazione di origine è impostata dal browser web. Un utente può manipolarlo per connettersi ancora al tuo servizio quando non passa attraverso il tuo sito web. Inoltre, qualcuno potrebbe creare e distribuire un'applicazione non browser che si connette al server websocket con un'intestazione di origine falsa. Controllare l'intestazione di origine impedisce solo l'abuso di massa attraverso gli utenti internet sfortunati che non sono consapevoli di utilizzare un back-end che non dovrebbero usare.

    
risposta data 25.02.2016 - 11:27
fonte

Leggi altre domande sui tag