Guia da Política de Segurança de Conteúdo

Este documento mostra recomendações para configurar a Política de Segurança de Conteúdo (CSP) do site para a API Maps JavaScript. Como diversos tipos e versões de navegadores são usados pelos usuários finais, recomendamos que os desenvolvedores tenham este exemplo como referência e façam ajustes até que não haja mais violações de CSP.

Saiba mais sobre a Política de Segurança de Conteúdo.

CSP rigorosa

Recomendamos o uso de uma CSP rigorosa, em vez da CSP da lista de permissões, para reduzir a possibilidade de ataques de segurança. A API Maps JavaScript é compatível com o uso de CSPs rigorosas com base em valor de uso único. Os sites precisam preencher os elementos script e style com um valor de uso único. Internamente, a API Maps JavaScript vai encontrar o primeiro desses elementos e aplicar o valor de uso único a elementos de estilo ou de script inseridos pelo script da API, respectivamente.

Exemplo

Confira a seguir um exemplo de CSP junto com uma página HTML em que a política está incorporada:

Exemplo de Política de Segurança de Conteúdo

script-src 'nonce-{script value}' 'strict-dynamic' https: 'unsafe-eval' blob:;
img-src 'self' https://*.googleapis.com https://*.gstatic.com *.google.com *.googleusercontent.com data:;
frame-src *.google.com;
connect-src 'self' https://*.googleapis.com *.google.com https://*.gstatic.com data: blob:;
font-src https://fonts.gstatic.com;
style-src 'nonce-{style value}' https://fonts.googleapis.com;
worker-src blob:;

Exemplo de página HTML

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css" nonce="{style value}">
    <style nonce="{style value}">...</style>
    ...
  </head>
  <body>
    <div id="map"></div>
    <script src="https://maps.googleapis.com/maps/api/js?key=&callback=initMap" async nonce="{script value}"></script>
    <script nonce="{script value}"> function initMap() { ... } </script>
  </body>
</html>

CSP da lista de permissões

Se você configurou a CSP da lista de permissões, consulte a lista de domínios do Google Maps. Recomendamos consultar este documento e as notas da versão da API Maps JavaScript para se manter atualizado e incluir qualquer novo domínio de serviço na lista de permissões, se necessário.

Os sites que carregam a API Maps JavaScript de um domínio legado das APIs do Google (por exemplo, maps.google.com) ou de um domínio específico da região (por exemplo, maps.google.fr) também precisam incluir esses nomes de domínio na configuração da CSP script-src, como mostrado no exemplo a seguir:

script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googleapis.com https://*.gstatic.com *.google.com https://*.ggpht.com *.googleusercontent.com blob:;
img-src 'self' https://*.googleapis.com https://*.gstatic.com *.google.com  *.googleusercontent.com data:;
frame-src *.google.com;
connect-src 'self' https://*.googleapis.com *.google.com https://*.gstatic.com  data: blob:;
font-src https://fonts.gstatic.com;
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
worker-src blob:;