Connessione websocket non riesce dopo l'aggiunta di Contenuti della Politica di Sicurezza in nginx

0

Domanda

Voglio aggiungere un nuovo header Content-Sicurezza-Politiche per il mio server nginx. conf per migliorare la sicurezza. Ho aggiunto tutte le fonti esterne e tutto funziona bene tranne che per il chatbot che è infobip. Utilizza wss protocollo e per qualche motivo non riesco a trovare il modo giusto per configurarlo.

Questo è l'errore che ricevo.

E questa è la mia intestazione in nginx.conf

add_header 'Content-Security-Politica' "default-src 'sé' "a rischio-inline' wss: wss://.infobip.com ws://.infobip.com .infobip.com http://www.w3.org https://fonts.googleapis.com https://stackpath.bootstrapcdn.com .youtube.com https://cdn.jsdelivr.net/; img src 'auto' data: https://.openstreetmap.org wss://livechat-fr.infobip.com/chat/web/proxy/827/toxgylwd/websocket sempre; connect-src 'auto' wss: ws: wss://.infobip.com ws://*.infobip.com .infobip.com https://.doubleclick.net wss://livechat-fr.infobip.com/chat/web/proxy/492/hybzmnjl/websocket 'sicuro-inline' sempre;";

Ho provato molti modi per consentire la connessione websocket, ma nessuno sembra funzionare.

2
0

Dal momento che ogni connessione websocket iniziare da una normale richiesta http, è necessario aggiungere un CSP per https://your-websocket-server-domain:port

La richiesta http risposta un 101: swtiching protocols e poi la connessione diventerà una connessione WebSocket.

Nota che io non credo che la ws: o wss: csp direttiva è richiesto a tutti.

2021-11-20 14:15:38
0

Ci sono 3 problemi:

  1. Errori di Console è dimostrato non CSP-correlati. "403 Forbidden" significa che non hanno accesso alle relative Url. "'X-Frame-Options' per 'negare'" significa che si tenta di incorporare iframe ma quella pagina non consente l'incorporamento di via X-Frame-Options: "DENY" Intestazione HTTP.

  2. Formato errato di Nginx add_header. Dovrebbe assomiglia (prestare attenzione alle virgolette - always parola chiave deve essere messo fuori il CSP impostazioni):

    add_header Content-Security-Policy "default-src 'self'..." always;

  3. Sbagliato il formato di CSP host fonti. Host-fonti .youtube.com non deve contenere un leader . dot:
    youtube.com permetterà di caricare le risorse da http(s)://youtube.com e *.youtube.com permetterà di risorse dal sottodomini di youtube.com.

Così il vostro sintatticamente corretto CSP dovrebbe apparire:

add_header Content-Security-Policy "\
default-src 'self' 'unsafe-inline' https://stackpath.bootstrapcdn.com\
https://fonts.googleapis.com infobip.com ws://infobip.com wss://infobip.com youtube.com\
https://cdn.jsdelivr.net http://www.w3.org;\
connect-src 'self' infobip.com wss://infobip.com ws://*.infobip.com\
wss://livechat-fr.infobip.com/chat/web/proxy/ https://doubleclick.net;\
img-src 'self' data: https://openstreetmap.org;\
" always;

Nota che:

  • wss://livechat-fr.infobip.com/chat/web/proxy/492/hybzmnjl/websocket - non includono grassetto percorso-parte a CSP, perché è cambiato ogni volta.
  • Lo schema-fonti wss: copre qualsiasi host-fonti di tale regime (ad esempio wss://sito.com/websocket). Così ho eliminato il regime-fonti e sinistra host fonti.
  • Ho cancellato alcuni non supportata da fonti, per esempio 'unsafe-inline' nel connect-src.
  • Nginx dovrebbe sostenere una barra rovesciata \ come interruzione di riga, quindi l'ho usato perché è difficile mantenere la CSP in una riga. Controllare non Nginx versione supporta questa funzione.

Nota 2: il CSP può bloccare alcune fonti - basta aggiungere loro di opportune direttive.

Nota 3: Considerare la possibilità di spostare le fonti dell' default-src direttiva per la script-src + style-src + font-src direttive. Perché, per ora, si permette effettivamente 'unsafe-inline' nel scrit-src così il CSP non protegge contro XSS. Sarà anche difficile da gestire CSP in futuro, poiché le fonti sono mescolati in una direttiva.

2021-11-28 23:35:39

Grazie, ma purtroppo ho ancora lo stesso errore di connessione WebSocket per ... impossibile. Anche io ricevo: si rifiutano di mostrare 'livechat-fr.infobip.com' in una cornice, perché set di 'X-Frame-Options' per 'deny'. Questo è come ho impostato l'intestazione add_header 'X-Frame-Options' "SAMEORIGIN" sempre;
Baseplate

Si imposta X-Frame-Options "SAMEORIGIN" del server, ma livechat-fr.infobip.com bloccato non è servito dal server. È livechat-fr.infobip.com pubblica X-Frame-Options "DENY" intestazione per evitare di incorporamento. Si può avere configurato male qualcosa nel tuo infobip.com account.
granty

Il problema è stato risolto. Il CSP direttiva funziona bene. Si è scoperto che la rete di imprese è stato bloccato il traffico da/per infobip e non ero stato informato. Grazie ancora per il vostro sforzo, ancora mi ha aiutato a impostare la direttiva dura.
Baseplate

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................