Conexão websocket falha após a adição de Conteúdo de Segurança-a Política no nginx

0

Pergunta

Eu quero adicionar um novo cabeçalho de Conteúdo de Segurança-a Política para o meu nginx conf fim de melhorar a segurança. Eu adicionei todas as fontes externas e tudo funciona bem, exceto para o chatbot que é infobip. Ele usa o wss protocolo e por algum motivo eu não consigo encontrar o caminho certo para configurá-lo.

Este é o erro que eu recebo.

E este é o meu cabeçalho no nginx.conf

add_header 'de Conteúdo de Segurança-a Política' "padrão-src 'auto' 'inseguro-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-pe.infobip.com/chat/web/proxy/827/toxgylwd/websocket sempre; conectar-src 'auto' wss: ws: wss://.infobip.com ws://*.infobip.com .infobip.com https://.doubleclick.net wss://livechat-pe.infobip.com/chat/web/proxy/492/hybzmnjl/websocket 'inseguro-inline' sempre;";

Eu tentei inúmeras formas para permitir que a conexão websocket, mas nada parece funcionar.

2
0

Uma vez que cada conexão websocket iniciar através de um regular pedido de http, você deve adicionar um CSP para https://your-websocket-server-domain:port

A solicitação http que será respondido com uma 101: swtiching protocols e, em seguida, a ligação irá tornar-se uma conexão WebSocket.

Nota que eu não acho que o ws: ou wss: csp directiva é necessária em todos os.

2021-11-20 14:15:38
0

Você tem 3 problemas:

  1. O Console de erros mostrados não são CSP-relacionados. "403 Proibido" significa que você não tem acesso à Url. "'Opções do Quadro de X' para 'negar'" significa que você tentar incorporar iframe, mas essa página não permite a incorporação de via X-Frame-Options: "DENY" Cabeçalho de HTTP.

  2. Formato incorreto do Nginx add_header. Ele deve se parece (preste atenção para citações - always palavra-chave deve ser colocado fora do CSP configurações):

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

  3. Errado formato de CSP host de fontes. Host de fontes, como .youtube.com não deve conter um líder . dot:
    youtube.com permitirá carregar recursos de http(s)://youtube.com e *.youtube.com permitam que os recursos do subdomínios de youtube.com.

Portanto, o seu sintaticamente correto o CSP deve se parece com:

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;

Observe que:

  • wss://livechat-pe.infobip.com/chat/web/proxy/492/hybzmnjl/websocket - não incluem negrito caminho-parte a CSP, porque é alterado a cada vez.
  • O esquema de fontes, como wss: cobre qualquer host de fontes com que esquema (por exemplo, o wss://site.com/websocket). Então eu apaguei o esquema de fontes e deixou o host de fontes.
  • Eu apaguei algumas não suportado fontes, por exemplo 'unsafe-inline' no connect-src.
  • Nginx devem apoiar uma barra invertida \ como quebra de linha, então eu usei isso porque é difícil manter CSP em uma linha. Verifique sua Nginx versão oferece suporte a esse recurso.

Nota 2: Este CSP pode bloquear algumas fontes - basta adicioná-los para o adequado directivas.

Nota 3: Considere mover os fontes do default-src directiva para o script-src + style-src + font-src directivas. Porque agora você, na verdade, permite 'unsafe-inline' no scrit-src assim, o CSP não protege contra XSS. Ele também vai ser difícil de gerir CSP no futuro, uma vez que as fontes são misturados em uma directiva.

2021-11-28 23:35:39

Obrigado, mas, infelizmente, eu ainda tenho o mesmo erro de conexão WebSocket para ... falhou. Também tenho: Recusou-se a exibir 'livechat-fr.infobip.com"em um quadro, porque é definido "X-Opções do Quadro de' negar'. Esta é a forma como eu configurar o cabeçalho add_header 'Opções do Quadro de X' "SAMEORIGIN" sempre;
Baseplate

Definir X-Frame-Options "SAMEORIGIN" no seu servidor, mas livechat-fr.infobip.com bloqueado não é servido pelo seu servidor. É livechat-fr.infobip.com publica X-Frame-Options "DENY" cabeçalho para evitar a incorporação. Você pode ter configurado algo errado em seu infobip.com conta.
granty

O problema é resolvido. O CSP directiva funciona bem. Descobriu-se que a rede empresarial foi a bloquear o tráfego de/para infobip e eu não tinha sido informado sobre isso. Obrigado novamente por seu esforço, ainda me ajudou a definir a directiva difícil.
Baseplate

Em outros idiomas

Esta página está em outros idiomas

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