Pular para o conteúdo principal

Content Security Policy

O SDK da Kaleidr é executado na página do cliente. Isso significa que a Content Security Policy da página do cliente deve permitir os recursos carregados por cada produto. Esta página apresenta a configuração.

Produto por produto

Tile e Viewer (produtos iframe)

Tile e Viewer carregam o mapa real dentro de map-embed.kaleidr.com, sob a CSP da Kaleidr. A página pai só precisa permitir o próprio iframe e o loader do SDK:

default-src 'self';
script-src 'self' https://cdn.kaleidr.com;
frame-src https://map-embed.kaleidr.com;
connect-src 'self' https://api.kaleidr.com;

Você não precisa permitir hosts de imagens Mapbox / MapTiler / OSM / vendor na página pai quando incorpora apenas Tile ou Viewer — eles ficam dentro do iframe da Kaleidr.

Chat e Editor (attach dentro da página)

Chat e Editor montam o MapLibre no documento pai. A CSP da página pai deve permitir todos os hosts que o MapLibre e o SDK realmente carregam:

default-src 'self';
script-src 'self' 'wasm-unsafe-eval' https://cdn.kaleidr.com;
style-src 'self' 'unsafe-inline' https://cdn.kaleidr.com;
connect-src 'self'
https://api.kaleidr.com
https://api.mapbox.com https://events.mapbox.com
https://api.maptiler.com
https://*.tiles.mapbox.com;
img-src 'self' data: blob:
https://api.mapbox.com https://*.tiles.mapbox.com
https://api.maptiler.com
https://*.tile.openstreetmap.org;
worker-src 'self' blob:;
font-src 'self' data:;

'wasm-unsafe-eval' é obrigatório — o MapLibre compila WebAssembly em runtime e falha sem isso. Se sua CSP proibir 'wasm-unsafe-eval', atualmente você não pode montar Chat ou Editor dentro da página.

O que falha primeiro

SintomaDiretiva provavelmente ausente
Loader do SDK retorna 404 ou é bloqueadoscript-src https://cdn.kaleidr.com
Inicialização do MapLibre falha (Chat/Editor)'wasm-unsafe-eval' em script-src
Tiles aparecem em branco / cinzaconnect-src e/ou img-src para o host do vendor
Iframe nunca renderiza (Tile / Viewer)frame-src https://map-embed.kaleidr.com
Session exchange retorna 4xx no consoleNão é CSP — consulte a origin allowlist em Auth & scopes

Nonces e hashes

'unsafe-inline' está incluído em style-src acima porque o MapLibre gera blocos <style> inline. Se sua CSP atualmente proíbe 'unsafe-inline', use um nonce e emita novamente os estilos sob esse nonce — o SDK atualmente não gera um nonce por carregamento; se precisar de um, abra uma issue em kaleidr-sdk.

Implantação report-only

A forma segura de adotar esta política é:

  1. Configure o bloco acima como Content-Security-Policy-Report-Only com um report-uri sob seu controle por uma semana.
  2. Adicione os hosts que aparecerem nos relatórios de violação à diretiva correta.
  3. Promova o header para Content-Security-Policy quando os relatórios estiverem limpos.