Minimize ataques XSS com Política de Segurança de Conteúdo

As promised, this feature was just enabled by default: CSP Frame Ancestors enabled by default

10 curtidas

Olá,
Estou configurando o Google AdSense no meu site e parece que me falta a configuração “Habilitar coleta de relatórios de violação de CSP em /csp_reports”. Atualmente estou auto-hospedando o Discourse na versão 2.9.0.beta6

acima, na citação, uma captura de tela da configuração que me falta


acima, minha página de configurações de CSP com a opção “Habilitar coleta de relatórios de violação de CSP em /csp_reports” faltando.

Qualquer ajuda é apreciada! E por favor, me diga se configurei as opções corretamente para o AdSense, nunca o usei antes :eyes: !

3 curtidas

Desculpe, minhas respostas anteriores aqui estão desatualizadas porque, há cerca de um mês, tornamos content_security_policy_collect_reports uma configuração oculta. Você ainda pode habilitá-la, mas precisa fazer isso através do console Rails, como em:

./launcher enter app
...
rails c
...
SiteSetting.content_security_policy_collect_reports = true

Note que isso gera muito ruído, recomendo fortemente não seguir por esse caminho e simplesmente habilitar o CSP e navegar pelo site com o console do navegador aberto usando vários navegadores (Chrome, Firefox, Safari). Você encontrará a maioria dos problemas dessa maneira. E com a configuração que você tem, você está basicamente permitindo quase tudo que o CSP protege, então não deve precisar dos relatórios.

6 curtidas

Talvez eu esteja perdendo alguma coisa, mas não vejo essas configurações na interface de configurações.

  • content_security_policy
  • content_security_policy_report_only
  • content_security_policy_collect_reports (Vejo que está oculto agora)
  • content_security_policy_script_src

Essas opções estão disponíveis para instâncias hospedadas? Não vi nenhuma menção de que isso seria uma limitação na postagem original ou nos comentários.

Edição: Também tentei definir a política de segurança através de um tema.

Não parece estar funcionando conforme instruído na postagem original.

Estou assumindo que o plano hospedado em que estou não permite isso, mesmo quando feito através de um tema ou componente de tema?

Ou talvez eu esteja fazendo algo totalmente errado.

1 curtida

Atualmente, o Discourse envia uma política CSP Nível 2 com as seguintes diretivas por padrão:

  • base-uri restringe as URLs para o elemento <base>

Existe alguma opção para substituir o valor padrão para o cabeçalho base-uri?

1 curtida

Onde os elementos <base> são realmente usados no discurso?

Isso quebraria as notificações push do Discourse?

Pode ser. Talvez precise de um ambiente mais adequado.

1 curtida

Uma postagem foi dividida em um novo tópico: Qual o método sugerido para usar imagens seguras?

Olá,\n\nPoderia me informar como posso contornar o problema abaixo? Adicionei o script invocando uma nova expressão Function() em content_security_policy_script_src, mas o console do meu navegador ainda reclama com o erro abaixo. Onde posso excluir o unsafe-eval? Obrigado!\n\nUncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive:\n\n

1 curtida

Desculpe. Por favor, ignore minha postagem anterior se minhas observações abaixo estiverem corretas. Saiba que, através das postagens acima, posso definir ‘unsafe-eval’ diretamente para content_security_policy_script_src, e não há mais nenhum erro de JS relatado no console.

1 curtida

Talvez dê uma olhada na configuração do site content security policy script src?

1 curtida

Sim. Conforme dito em respostas anteriores, ‘unsafe-eval’ pode ser adicionado diretamente a content_security_policy_script_src. Eu pensei que apenas a base de URL ou a URL completa eram permitidas para adicionar.

1 curtida