Websocket conexiunea eșuează după adăugarea de Conținut-de Securitate-Politica în nginx

0

Problema

Vreau să adăugați un nou antet Content-Securitate-Politica a mea nginx conf, în scopul de a îmbunătăți securitatea. Am adăugat toate surse externe și totul funcționează bine, cu excepția pentru chatbot care este infobip. Folosește wss protocol și pentru un motiv oarecare nu-mi pot găsi calea cea dreaptă pentru a-l configura.

Aceasta este eroarea pe care o primesc.

Și acest lucru este meu antet în nginx.conf

add_header 'Content-Securitate-Politica "default-src "sine" 'nesigur-inline' aac: aac://.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 "sine" date: https://.openstreetmap.org aac://livechat-fr.infobip.com/chat/web/proxy/827/toxgylwd/websocket întotdeauna; connect-src "sine" aac: ws: aac://.infobip.com ws://*.infobip.com .infobip.com https://.doubleclick.net aac://livechat-fr.infobip.com/chat/web/proxy/492/hybzmnjl/websocket 'nesigur-inline' mereu;";

Am încercat numeroase metode pentru a permite websocket legătură, dar niciuna nu pare să funcționeze.

2
0

Deoarece fiecare websocket conexiune începe prin a regulat o cerere http, trebuie să adăugați un CSP pentru https://your-websocket-server-domain:port

La cerere http de răspuns va fi cu un 101: swtiching protocols și atunci conexiunea va deveni un WebSocket conexiune.

Rețineți că nu cred că ws: sau wss: csp directivă este necesară la toate.

2021-11-20 14:15:38
0

Ai 3 probleme:

  1. Consola de erori prezentate nu sunt CSP-legate. "403 Forbidden" înseamnă că nu au acces la Url-ul aferent. "'X-Frame-Options" pentru a "nega" înseamnă că încercați să iframe embed, dar pagina nu permite încorporarea prin X-Frame-Options: "DENY" Antet HTTP.

  2. Greșit format de Nginx add_header. Acesta ar trebui să se pare (atentie la ghilimele - always cuvinte cheie ar trebui să fie plasat din CSP setări):

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

  3. Greșit format de CSP-gazdă surse. Host-surse, cum ar fi .youtube.com nu trebuie să conțină un lider . dot:
    youtube.com va permite pentru a încărca resursele de http(s)://youtube.com și *.youtube.com va permite de resurse de la subdomenii de youtube.com.

Deci, din punct de vedere sintactic corectă CSP ar trebui să arata ca:

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;

Rețineți că:

  • aac://livechat-fr.infobip.com/chat/web/proxy/492/hybzmnjl/websocket - nu includ bold cale de-o parte pentru a CSP, pentru că s-a schimbat de fiecare dată.
  • Schema-surse, cum ar fi wss: se referă la orice host-surse cu acest sistem (de exemplu, aac://site.com/websocket). Așa că am șters scheme-surse și a lăsat-gazdă surse.
  • Am sters unele neacceptate surse, de exemplu 'unsafe-inline' în connect-src.
  • Nginx ar trebui să sprijine un backslash \ ca linie de pauză, așa că am folosit-o pentru că e greu să mențină CONCENTRATĂ într-o singură linie. Verificați are Nginx versiune acceptă această caracteristică.

Nota 2: Acest CSP poate bloca unele surse - doar adăugați-le la directivele corespunzătoare.

Nota 3: ia în Considerare trecerea la surse de default-src directiva a script-src + style-src + font-src directivele. Pentru că acum vă permite de fapt 'unsafe-inline' în scrit-src deci, CSP nu protejează împotriva XSS. Acesta va fi, de asemenea, dificil de a gestiona CSP în viitor, deoarece sursele sunt amestecate într-o singură directivă.

2021-11-28 23:35:39

Multumesc, dar din păcate eu încă obține aceeași eroare - WebSocket conexiune la ... nu a reușit. Am obține, de asemenea: a Refuzat să display 'livechat-fr.infobip.comîntr-un cadru pentru a seta 'X-Frame-Options' a "deny". Acest lucru este cum am stabilit antet add_header 'X-Frame-Options' "SAMEORIGIN" întotdeauna;
Baseplate

Setați X-Frame-Options "SAMEORIGIN" pe server dar livechat-fr.infobip.com blocat nu este servit de către server. E livechat-fr.infobip.com publică X-Frame-Options "DENY" antet pentru a preveni încorporarea. Poate ați configurat ceva incorect în infobip.com cont.
granty

Problema este rezolvată. CSP directiva funcționează bine. S-a dovedit că rețeaua corporativă a fost blocarea traficului la/la infobip și nu am fost informat despre asta. Vă mulțumesc din nou pentru efort, tot m-au ajutat set directiva greu.
Baseplate

În alte limbi

Această pagină este în alte limbi

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