Content Security Policy (CSP) é um padrão de segurança que ajuda a prevenir ataques de cross-site scripting (XSS) ao controlar quais recursos uma página da web pode carregar. A Mintlify fornece uma CSP padrão que protege a maioria dos sites. Se você hospedar sua documentação atrás de um proxy reverso ou firewall que substitua a CSP padrão, talvez seja necessário configurar cabeçalhos de CSP para que os recursos funcionem corretamente.

Diretivas CSP

As seguintes diretivas CSP são usadas para controlar quais recursos podem ser carregados:
  • script-src: Controla quais scripts podem ser executados
  • style-src: Controla quais folhas de estilo podem ser carregadas
  • font-src: Controla quais fontes podem ser carregadas
  • img-src: Controla quais imagens, ícones e logotipos podem ser carregados
  • connect-src: Controla a quais URLs é possível se conectar para chamadas de API e conexões WebSocket
  • frame-src: Controla quais URLs podem ser incorporadas em frames ou iframes
  • default-src: Diretriz padrão usada como fallback quando outras não estiverem definidas explicitamente

Lista de permissões de domínios

DomínioFinalidadeDiretiva CSPObrigatório
d4tuoctqmanu0.cloudfront.netCSS e fontes do KaTeXstyle-src, font-srcObrigatório
*.mintlify.devConteúdo da documentaçãoconnect-srcObrigatório
d3gk2c5xim1je2.cloudfront.netÍcones, imagens, logosimg-srcObrigatório
www.googletagmanager.comGoogle Analytics/GTMscript-src, connect-srcOpcional
cdn.segment.comAnalytics do Segmentscript-src, connect-srcOpcional
plausible.ioAnalytics do Plausiblescript-src, connect-srcOpcional
tag.clearbitscripts.comRastreamento da Clearbitscript-srcOpcional
cdn.heapanalytics.comAnalytics do Heapscript-srcOpcional
chat.cdn-plain.comWidget de chat da Plainscript-srcOpcional
chat-assets.frontapp.comWidget de chat da Frontscript-srcOpcional

Exemplo de configuração de CSP

Inclua apenas os domínios dos serviços que você utiliza. Remova quaisquer domínios de análise que você não tenha configurado para sua documentação.
Content-Security-Policy:
default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval' www.googletagmanager.com cdn.segment.com plausible.io tag.clearbitscripts.com cdn.heapanalytics.com
chat.cdn-plain.com chat-assets.frontapp.com;
style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net;
font-src 'self' d4tuoctqmanu0.cloudfront.net;
img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net;
connect-src 'self' *.mintlify.dev www.googletagmanager.com cdn.segment.com plausible.io;
frame-src 'self' *.mintlify.dev;

Configurações comuns por tipo de proxy

A maioria dos proxies reversos oferece suporte à adição de cabeçalhos personalizados.

Configuração do Cloudflare

Crie uma regra de transformação de cabeçalho de resposta (Response Header Transform Rule):
  1. No painel do Cloudflare, vá para Rules > Overview.
  2. Selecione Create rule > Response Header Transform Rule.
  3. Configure a regra:
  • Modify response header: Set static
    • Header name: Content-Security-Policy
    • Header value:
      default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net; font-src 'self' d4tuoctqmanu0.cloudfront.net; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net; connect-src 'self' *.mintlify.dev; frame-src 'self' *.mintlify.dev;
      
  1. Publique a regra.

Configuração do AWS CloudFront

Adicione uma política de cabeçalhos de resposta no CloudFront:
{
"ResponseHeadersPolicy": {
    "Name": "MintlifyCSP",
    "Config": {
    "SecurityHeadersConfig": {
        "ContentSecurityPolicy": {
        "ContentSecurityPolicy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net; font-src 'self' d4tuoctqmanu0.cloudfront.net; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net; connect-src 'self' *.mintlify.dev; frame-src 'self' *.mintlify.dev;",
        "Override": true
        }
      }
    }
  }
}

Configuração da Vercel

Adicione ao seu vercel.json:
{
"headers": [
    {
    "source": "/(.*)",
    "headers": [
        {
        "key": "Content-Security-Policy",
        "value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net; font-src 'self' d4tuoctqmanu0.cloudfront.net; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net; connect-src 'self' *.mintlify.dev; frame-src 'self' *.mintlify.dev;"
        }
      ]
    }
  ]
}

Solução de problemas

Identifique violações de CSP no console do navegador:
  1. Abra as Ferramentas de Desenvolvedor do seu navegador.
  2. Vá até a guia Console.
  3. Procure por erros que comecem com:
    • Content Security Policy: The page's settings blocked the loading of a resource
    • Refused to load the script/stylesheet because it violates the following Content Security Policy directive
    • Refused to connect to because it violates the following Content Security Policy directive