Websocket připojení se nezdaří po přidání Content-Security-Policy v nginx

0

Otázka

Chci přidat nové záhlaví Content-Security-Policy mé nginx conf s cílem zlepšit zabezpečení. Přidal jsem všechny externí zdroje a vše funguje v pořádku až na chatbot, který je infobip. Používá wss protokolu a z nějakého důvodu nemůžu najít správný způsob, jak jej nakonfigurovat.

To je chyba, že jsem si.

A tohle je můj záhlaví v nginx.conf

add_header 'Content-Security-Policy' "default-src 'self' 'unsafe-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 'self' data: https://.openstreetmap.org wss://livechat-fr.infobip.com/chat/web/proxy/827/toxgylwd/websocket vždy; připojení-src 'self' wss: ws: wss://.infobip.com ws://*.infobip.com .infobip.com https://.doubleclick.net wss://livechat-fr.infobip.com/chat/web/proxy/492/hybzmnjl/websocket 'unsafe-inline' vždy;";

Snažil jsem se mnoho způsobů, jak umožnit websocket spojení, ale nic, zdá se do práce.

2
0

Protože každý websocket připojení začít tím, že normální http požadavek, musíte přidat CSP pro https://your-websocket-server-domain:port

Http požadavek bude odpověděl s 101: swtiching protocols a pak se spojení bude WebSocket připojení.

Všimněte si, že nemyslím si, že ws: nebo wss: csp směrnice je nutné vůbec.

2021-11-20 14:15:38
0

Máte 3 otázky:

  1. Konzole chyby, které se ukázaly nejsou CSP-související. "403 Zakázáno" znamená, že nemusíte mít přístup k související Url. "X-Frame-Options" na " popřít!" znamená, že se pokusíte vložit iframe ale, že strana zakáže vkládání přes X-Frame-Options: "DENY" Záhlaví HTTP.

  2. Špatný formát Nginx add_header. Je třeba vypadá (pozor na citace - always klíčové slovo by měly být umístěny mimo CSP nastavení):

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

  3. Špatný formát CSP hostitele-zdroje. Host-zdrojů, jako .youtube.com nesmí obsahovat přední . dot:
    youtube.com umožní načíst zdroje z http(s)://youtube.com a *.youtube.com umožní, aby prostředky ze subdomény youtube.com.

Takže vaše syntakticky správné CSP by vypadá takto:

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;

Všimněte si, že:

  • wss://livechat-fr.infobip.com/chat/web/proxy/492/hybzmnjl/websocket - neobsahují bold path-část CSP, protože to změní pokaždé, když.
  • Schéma-zdrojů, jako wss: zahrnuje všechny hostitele-zdroje s tímto režimem (např. wss://stránky.com/websocket). Tak jsem smazal systému-zdroje a opustil hostitele-zdroje.
  • Vymazal jsem některé nepodporované zdroje, například 'unsafe-inline' v connect-src.
  • Nginx by měl podporovat zpětné lomítko \ jako konec řádku, tak jsem to použil, protože to je těžké udržet CSP v jedné linii. Zkontrolujte, zda se vaše Nginx verze podporuje tuto funkci.

Poznámka 2: Tato CSP může blokovat některé zdroje - stačí přidat je do příslušných směrnic.

Poznámka 3: Zvážit přesun zdrojů z default-src směrnice script-src + style-src + font-src směrnic. Protože pro teď vám vlastně umožňuje 'unsafe-inline' v scrit-src takže vaše CSP nechrání proti XSS. To bude také být obtížné spravovat CSP v budoucnu, protože zdroje jsou smíchány v jedné směrnice.

2021-11-28 23:35:39

Díky, ale bohužel jsem stále tu samou chybu - WebSocket připojení k ... nepodařilo. Také jsem si: Odmítl displejlivechat-fr.infobip.com' v rámu, protože to set 'X-Frame-Options' na "zakázat". To je, jak jsem se nastavit záhlaví add_header 'X-Frame-Options' "SAMEORIGIN" vždy;
Baseplate

Můžete nastavit X-Frame-Options "SAMEORIGIN" na vašem serveru, ale livechat-fr.infobip.com blokované není doručena serveru. To je livechat-fr.infobip.com publikuje X-Frame-Options "DENY" záhlaví, aby se zabránilo vkládání. Možná jste nakonfigurovali něco špatně ve vašem infobip.com účet.
granty

Problém je vyřešen. CSP směrnice funguje v pořádku. Ukázalo se, že firemní síť byla blokování provozu z/do infobip a nebyla jsem o tom informována. Znovu vám děkuji za vaše úsilí, stále mi pomohl nastavit směrnice těžké.
Baseplate

V jiných jazycích

Tato stránka je v jiných jazycích

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