Consentimento de Cookies, GDPR e Discourse

:books: Este é um guia explicativo sobre como os aspectos técnicos do GDPR e do Consentimento de Cookies operam no Discourse, juntamente com opções para gerenciamento de Consentimento de Cookies e Serviços de Gerenciamento de Conteúdo.

:warning: Este documento não é um guia abrangente sobre todos os detalhes envolvidos no GDPR. O Discourse não pretende que este guia seja usado como aconselhamento jurídico para usuários ou clientes. O Discourse não pode determinar a conformidade legal com o GDPR ou qualquer outra lei de Consentimento de Cookies para sua situação ou caso de uso individual.

:spiral_notepad: O Discourse agora utiliza uma CSP de “Strict Dynamic” (Dinâmica Estrita), portanto, adicionar URLs individuais à configuração do site Content security policy script src não é mais necessário (nem possível). Para detalhes adicionais, consulte Content-Security-Policy now uses 'strict-dynamic'.

Cookies no Discourse

Para entender como o Discourse utiliza cookies, consulte a seção de cookies do nosso aviso de privacidade.

Cookies Essenciais

Por padrão, o Discourse define apenas cookies necessários para sua funcionalidade básica, que é permitir que os usuários se comuniquem entre si e com o mundo, publicando conteúdo na internet.

Cookies de Terceiros

Por padrão, o Discourse não utiliza cookies para análises, nem utiliza cookies de rastreamento entre sites ou de direcionamento de anúncios. No entanto, administradores do site podem optar por adicionar outros cookies ao seu site Discourse (por exemplo, Google Analytics, redes de anúncios, pixels de rastreamento, etc.).

Se scripts de terceiros forem adicionados ao Discourse e introduzirem cookies, é responsabilidade da equipe administrativa do site encontrar uma solução de gerenciamento de cookies compatível com o GDPR ou abordar cookies que possam exigir consentimento sob o GDPR.

Banners de Consentimento de Cookies

Se você deseja integrar um banner de consentimento de cookies à sua instância do Discourse, pode seguir os guias que elaboramos para alguns dos mais populares abaixo.

:loudspeaker: Referenciar um script JS de terceiros em seu site essencialmente concede a esse terceiro acesso administrativo completo ao site, o que representa um potencial risco de segurança.

:warning: Se você planeja usar um desses métodos para gerenciar o Consentimento de Cookies, deverá determinar se eles funcionam de maneira que atenda às suas necessidades e aos requisitos legais do seu site.

Osano

Acesse Plans & Pricing | Osano, escolha um plano e crie uma conta.

Após criar a conta, você receberá um e-mail com credenciais temporárias. Faça login usando essas credenciais e será solicitado a definir uma nova senha.

Você será levado ao Painel do Osano. Clique em Gerenciamento de Consentimento e adicione uma nova configuração de consentimento.

Preencha um Nome para o gerenciador, a URL do site que deseja rastrear e a URL da política de cookies do seu site. Por padrão, a política de cookies do Discourse pode ser encontrada na página de Privacidade em https://<seu-site>/privacy.

Após clicar em Create configuration (Criar configuração), uma janela pop-up mostrará o código para o banner. Você pode adicioná-lo ao Discourse agora ou aguardar mais tarde. O banner não será exibido aos usuários até que você o publique no painel do Osano.

Você pode adicionar o script ao Discourse por meio de um componente de tema ou modificando seu tema diretamente.

Para adicionar o banner ao Discourse, vá para o painel de administração, Personalizar → Temas → Componentes e clique em Instalar.

Clique em Adicionar CSS/HTML e adicione o código à seção Cabeçalho (Head).

Se o código foi adicionado com sucesso ao seu fórum, você verá que o status do seu gerenciador agora diz Live (Ao Vivo), mas Your script is not yet active (Seu script ainda não está ativo). O gerenciador também está no Mode Discovery/Listener (Modo Descoberta/ouvinte), o que é bom por enquanto. Enquanto o gerenciador estiver nesse modo, o banner não será exibido em seu site.

Volte ao painel do Osano. Nas próximas seções, você pode personalizar os aspectos do seu banner de consentimento. Ao clicar no mapa, você pode ver como o banner será exibido em diferentes países.

O Osano detecta automaticamente o país de onde o usuário está acessando o site e ajusta a aparência do banner de acordo com as leis de privacidade regionais.

Por exemplo, ao se conectar da Venezuela, o banner de cookies é simples e desaparece automaticamente após um certo período de tempo:

Mas, dos Países Baixos, um país da UE, o banner tem mais opções:

Há também uma opção para adicionar um widget de cookies que exibe mais detalhes sobre os cookies.

Após suas personalizações estarem prontas, clique em Save changes (Salvar alterações), depois em Publish (Publicar) e finalmente em Clear & Publish (Limpar e Publicar).

Vá para a seção Scripts e classifique qualquer script detectado em seu site. Por exemplo, no meu site Discourse, apenas URLs de CDN foram detectadas, que são classificadas como Essential (Essenciais). Qualquer outro serviço de terceiros que você possa estar executando em seu site precisa ser classificado de acordo.

O mesmo se aplica a qualquer cookie detectado. Por exemplo, se você tiver o Google Analytics em seu site, ele detectará os cookies _ga, que devem ser classificados como Analytics (Análises).

Pode levar algum tempo para que o Osano detecte os cookies e scripts em execução em seu site; você também pode precisar navegar pelas diferentes seções do seu fórum para garantir que o snippet do Osano seja executado em todos os lugares.

Os cookies e scripts detectados podem mudar com o tempo; você receberá uma notificação por e-mail do Osano pedindo para atualizar sua classificação da seguinte forma: Configuration 'Cookie test' is running unclassified scripts, iframes and/or cookies. (Configuração ‘Teste de Cookie’ está executando scripts, iframes e/ou cookies não classificados.)

Uma vez que a classificação esteja pronta, altere o modo para Permissivo (recomendado) ou Estrito e publique a configuração. O banner agora estará visível para seus usuários :tada:

image

Saiba mais sobre os modos de configuração de cookies aqui: compliance-modes-listener-permissive-strict | Customer Portal

Como o Osano usa web workers, também precisamos adicionar blob: à diretiva worker-src. Isso deve ser feito por meio de um tema ou componente personalizado; consulte a seção ‘Extending the Default CSP’ (Estendendo a CSP Padrão) em Mitigate XSS Attacks with Content Security Policy.

Em resumo, você precisa criar um componente de tema vazio, com os seguintes parâmetros no arquivo settings.yml:

# settings.yml
extend_content_security_policy:
  type: list
  default: "worker_src: blob:"

:loudspeaker: Se seu banner não estiver sendo exibido, consulte a seção Depuração de CSP.

OneTrust

Acesse Cookie Consent | Products | OneTrust; você pode se inscrever gratuitamente para seu primeiro domínio ou iniciar uma assinatura paga na página de preços.

Você receberá um e-mail de boas-vindas ao OneTrust, com um link para fazer login na plataforma, que o guiará pela configuração da sua conta.

Você será levado para https://app.onetrust.com/welcome. Nas seções Avalaible Apps (Aplicativos Disponíveis) ou My Apps (Meus Aplicativos), escolha o Cookie Compliance (Conformidade com Cookies).

Selecione Add Website (Adicionar Site).

Adicione a URL do seu site.

Inicie a varredura e, em seguida, selecione seu(s) público(s): as estruturas de privacidade com as quais você precisa estar em conformidade (como o GDPR).

Nas próximas seções, você pode personalizar os aspectos do seu banner e adicionar sua própria marca. Salve suas alterações e publique-as quando estiver pronto.

Para adicionar o banner ao Discourse, vá para a seção Integration (Integração), no menu lateral, e selecione seu site na lista.

Copie o script Production CDN (CDN de Produção), de Production Scripts (Scripts de Produção),

Você pode adicionar o script ao Discourse por meio de um componente de tema ou modificando seu tema diretamente.

Vá para o painel de administração, Personalizar → Temas → Componentes e clique em Instalar.

Clique em Adicionar CSS/HTML e adicione o código que você copiou à seção Cabeçalho (Head).

E é isso! O banner deve parecer algo assim:

:loudspeaker: Se seu banner não estiver sendo exibido, consulte a seção Depuração de CSP.

ConsentManager

Acesse Free test now! - ConsentManager GDPR solution e crie uma conta. Siga o assistente para configurar o gerenciador de consentimento.

Na etapa 4, antes de clicar no botão Continue (Continuar), role a página para baixo. Abaixo da seção “Choose your system” (Escolha seu sistema), você verá uma seção chamada “Setup using copy & paste” (Configuração usando copiar e colar). Selecione a aba Semi-Automatic blocking (Bloqueio Semiautomático) e copie o código nessa seção.

Você pode adicionar o script ao Discourse por meio de um componente de tema ou modificando seu tema diretamente.

Vá para o painel de administração, Personalizar → Temas → Componentes e clique em Instalar.

Clique em Adicionar CSS/HTML e adicione o código que você copiou à seção Corpo (Body).

E é isso! O banner deve parecer algo assim:

:loudspeaker: Se seu banner não estiver sendo exibido, consulte a seção Depuração de CSP.

Componente de Tema de Banner de Consentimento de Cookies

Este componente de tema permitirá que você adicione um banner de Consentimento de Cookies personalizável ao seu fórum. Ele simplesmente oferece uma maneira fácil para administradores do Discourse utilizarem o banner de Consentimento de Cookies de código aberto da Insites

Para instruções sobre como instalar componentes de tema do Discourse, consulte: Installing a theme or theme component

Depuração de CSP

Se seu banner de consentimento de cookies não estiver sendo exibido:

  1. Verifique erros no console do navegador: Procure por erros relacionados à CSP no console do seu navegador.
  2. Verifique o método de carregamento do script: Garanta que seu script de consentimento de cookies esteja sendo carregado corretamente:
    • Scripts adicionados aos cabeçalhos do tema são automaticamente confiáveis
    • Scripts carregados dinamicamente via loadScript() ou elementos de script criados programaticamente funcionarão com strict-dynamic
    • Evite scripts “parser-inserted” (injeção direta de HTML com tags de script)
  3. Configurações especiais: Alguns gerenciadores de consentimento podem exigir configurações especiais ou podem ter requisitos específicos para funcionar com CSP. Consulte a documentação deles para compatibilidade com CSP.
  4. unsafe-eval: Se seu script de consentimento de cookies exigir unsafe-eval, você ainda pode adicioná-lo à configuração content security script src (com aspas: 'unsafe-eval').

:warning: Tenha cuidado ao adicionar 'unsafe-eval' ou outras diretivas permissivas, pois elas podem reduzir a eficácia da CSP.

Se você continuar a enfrentar problemas após essas etapas, pode ser necessário verificar se seu provedor de consentimento de cookies é compatível com implementações modernas de CSP ou entrar em contato com o suporte deles para obter assistência.

Outras Opções de Serviços de Gerenciamento de Conteúdo

Além das opções mencionadas acima para gerenciamento de cookies, outras opções para serviços de gerenciador de consentimento que podem funcionar com o Discourse incluem:

Política de Cookies

Este guia explica como adicionar a Política de Cookies de diferentes fornecedores à página /privacy no Discourse.

OneTrust

Nota: Você pode ler as etapas sobre como configurar uma conta OneTrust e criar um componente de tema na seção acima.

  • Habilite o suporte a SPA na sua conta OneTrust seguindo as instruções descritas aqui.

  • Adicione os seguintes dois blocos de código, um abaixo do outro, à seção Head (Cabeçalho) do componente de tema.

  • Nota: As duas funções clearDup e reloadOTBanner são retiradas desta página. Certifique-se de usá-las. A versão dessas funções no código abaixo é apenas um exemplo e pode estar desatualizada no momento da leitura.

      <script type="text/x-handlebars" data-template-name="/connectors/below-static/add-cookie-policy">
          <div id="ot-sdk-cookie-policy"></div>
      </script>
    

      <script type="text/discourse-plugin" version="0.10.0">
          //DEVE SER USADO APENAS NA POLÍTICA DE COOKIES. DISPARAR A FUNÇÃO ABAIXO PARA REMOVER CATEGORIAS DUPLICADAS
          // script retirado de: https://my.onetrust.com/s/article/UUID-69162cb7-c4a2-ac70-39a1-ca69c9340046?language=en_US#UUID-69162cb7-c4a2-ac70-39a1-ca69c9340046_section-idm45403310539216
      
          function reloadOTBanner() {
      
              var otConsentSdk = document.getElementById("onetrust-consent-sdk");
              if (otConsentSdk) {
                  otConsentSdk.remove();
              }
      
              if (window.OneTrust != null) {
                  OneTrust.Init();
      
                  setTimeout(function() {
                      OneTrust.LoadBanner();
      
                      var toggleDisplay = document.getElementsByClassName(
                          "ot-sdk-show-settings"
                      );
      
                      for (var i = 0; i < toggleDisplay.length; i++) {
                          toggleDisplay[i].onclick = function(event) {
                              event.stopImmediatePropagation();
                              window.OneTrust.ToggleInfoDisplay();
                          };
                      }
                  }, 1000);
              }
          }
          function clearDup() {
              var sec = document.getElementById("ot-sdk-cookie-policy")
              var tally = [];
              for (var i = sec.length - 1; i >= 0; i--) {
                  if (tally[sec[i].firstChild.innerText] === undefined) {
                      tally[sec[i].firstChild.innerText] = 1;
                  } else {
                      //console.log(i,sec[i].firstChild.innerText);
                      sec[i].remove();
                      //return true;
                  }
              }
              //return false;
          }
          api.onAppEvent("page:changed", (data) => {
              if(data.currentRouteName == 'privacy') {
                  reloadOTBanner();
                  clearDup();
              }
          })
      </script>
    

Notas

  • Se você olhar o console do navegador, pode encontrar que a função OptanonWrapper está faltando no arquivo onde você adicionou seu Consentimento de Cookies ou qualquer código relacionado, mas esse não é o caso. O Discourse não remove o bloco de código com a função OptanonWrapper; em vez disso, ele converte esse bloco em seu próprio arquivo. Você pode tentar chamar essa função no console JS do seu navegador para confirmar que a função realmente existe.
17 curtidas

Para Usuários do Cloudflare

https://community.cloudflare.com/t/how-to-create-custom-consent-modal-and-customise-it-using-zaraz-consent-api/699318