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.
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ínio | Finalidade | Diretiva CSP | Obrigatório |
---|
d4tuoctqmanu0.cloudfront.net | CSS e fontes do KaTeX | style-src , font-src | Obrigatório |
*.mintlify.dev | Conteúdo da documentação | connect-src | Obrigatório |
d3gk2c5xim1je2.cloudfront.net | Ícones, imagens, logos | img-src | Obrigatório |
www.googletagmanager.com | Google Analytics/GTM | script-src , connect-src | Opcional |
cdn.segment.com | Analytics do Segment | script-src , connect-src | Opcional |
plausible.io | Analytics do Plausible | script-src , connect-src | Opcional |
tag.clearbitscripts.com | Rastreamento da Clearbit | script-src | Opcional |
cdn.heapanalytics.com | Analytics do Heap | script-src | Opcional |
chat.cdn-plain.com | Widget de chat da Plain | script-src | Opcional |
chat-assets.frontapp.com | Widget de chat da Front | script-src | Opcional |
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):
- No painel do Cloudflare, vá para Rules > Overview.
- Selecione Create rule > Response Header Transform Rule.
- 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;
- 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
}
}
}
}
}
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;"
}
]
}
]
}
Identifique violações de CSP no console do navegador:
- Abra as Ferramentas de Desenvolvedor do seu navegador.
- Vá até a guia Console.
- 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