mozilla

Revisão 421373 de Introdução a Content Security Policy

  • Slug da revisão: Security/CSP/Introdução_a_Content_Security_Policy
  • Título da revisão: Introdução a Content Security Policy
  • ID da revisão: 421373
  • Criado:
  • Criador: srsaude
  • É a revisão atual? Não
  • Comentar Untranslating links

Conteúdo da revisão

{{ gecko_minversion_header("2") }}

Content Security Policy (CSP) é uma camada extra de segurança que ajuda a detectar e mitigar certos tipos de ataques, incluindo Cross Site Scripting (XSS) e ataques de injeção de dados. Esses ataques são usados para tudo, desde roubo de dados até defacement ou distribuição de malware.

A CSP é projetada para ser totalmente retrocompatível; navegadores que não a suportam ainda funcionam com servidores que a implementam e vice-versa. Navegadores que não suportam a CSP simplesmente a ignoram, adotando a política same-origin para conteúdo web. Se o site não oferece o cabeçalho CSP, os navegadores também usam a política padrão same-origin.

Habilitar a CSP é tão fácil quanto configurar seu servidor web para devolver o cabeçalho HTTP X-Content-Security-Policy. Veja Usando a Content Security Policy para detalhes sobre como configurar e habilitar a CSP.

Nota: A especificação Content Security Policy define que uma tag {{ HTMLElement("meta") }} pode ser usada para configurar uma política, mas esse comportamento ainda não é suportado no Firefox. Suporte a esta funcionalidade está sendo adicionada no bug 663570.

Mitigando o cross site scripting

O principal objetivo da CSP é mitigar e reportar ataques XSS. Ataques XSS exploram a credibilidade do navegador no conteúdo recebido do servidor. Scripts maliciosos são executados pelo navegador da vítima porque o navegador confia na fonte do conteúdo, mesmo quando este não vem de onde parece vir.

A CSP torna possível para os administradores de servidores reduzir ou eliminar os vetores pelos quais ataques XSS podem ocorrer. Isso é feito pela especificação dos domínios que o navegador deve considerar como fontes válidas de scripts executáveis. Um navegador compatível com a CSP somente executará scripts carregados em arquivos recebidos dos domínios especificados, ignorando quaisquer outros scripts (incluindo scripts inline e atributos de eventos no HTML).

Como uma forma máxima de proteção, sites que nunca permitirão a execução de scripts podem optar por desabilitar a execução de scripts de forma global.

Mitigando ataques de packet sniffing

Além de restringir os domínios dos quais conteúdo pode ser carregado, o servidor pode especificar quais protocolos podem ser usados; por exemplo (e, idealmente, de um ponto de vista de segurança), um servidor pode especificar que todo o conteúdo deve ser carregado usando HTTPS.

Nota: Uma estratégia de segurança de transmissão de dados completa inclui não apenas garantir o uso de HTTPS para transferência de dados, mas também marcar todos os cookies como seguros e redirecionar automaticamente páginas HTTP para as correspondentes HTTPS.
Nota: Sites também podem utilizar o cabeçalho HTTP Strict-Transport-Security para garantir que os navegadores conectem a eles apenas via um canal criptografado.

Veja também

Especificação

  • {{ spec("https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/latest.html", "Content Security Policy (Unofficial Draft)") }}

{{ languages( { "en": "en/Introducing_Content_Security_Policy", "ja": "ja/Introducing_Content_Security_Policy" } ) }}

 

Fonte da revisão

<p>{{ gecko_minversion_header("2") }}</p>
<p><strong>Content Security Policy</strong> (CSP) é uma camada extra de segurança que ajuda a detectar e mitigar certos tipos de ataques, incluindo Cross Site Scripting (XSS) e ataques de injeção de dados. Esses ataques são usados para tudo, desde roubo de dados até defacement ou distribuição de malware.</p>
<p>A CSP é projetada para ser totalmente retrocompatível; navegadores que não a suportam ainda funcionam com servidores que a implementam e vice-versa. Navegadores que não suportam a CSP simplesmente a ignoram, adotando a política same-origin para conteúdo web. Se o site não oferece o cabeçalho CSP, os navegadores também usam a política padrão <a href="/en/Same_origin_policy_for_JavaScript" title="En/Same origin policy for JavaScript">same-origin</a>.</p>
<p>Habilitar a CSP é tão fácil quanto configurar seu servidor web para devolver o cabeçalho HTTP <code>X-Content-Security-Policy</code>. Veja <a href="/en/Security/CSP/Using_Content_Security_Policy" title="en/Security/CSP/Using Content Security Policy">Usando a Content Security Policy</a> para detalhes sobre como configurar e habilitar a CSP.</p>
<div class="note">
  <strong>Nota:</strong> <a class="link-https" href="https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#meta-http-equiv--x-content-security-policy---html-element" title="https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#meta-http-equiv--x-content-security-policy---html-element">A especificação Content Security Policy define que</a> uma tag {{ HTMLElement("meta") }} pode ser usada para configurar uma política, mas esse comportamento ainda não é suportado no Firefox. Suporte a esta funcionalidade está sendo adicionada no <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=663570" title="https://bugzilla.mozilla.org/show_bug.cgi?id=663570">bug 663570</a>.</div>
<h2 id="Mitigando_o_cross_site_scripting">Mitigando o cross site scripting</h2>
<p>O principal objetivo da CSP é mitigar e reportar ataques XSS. Ataques XSS exploram a credibilidade do navegador no conteúdo recebido do servidor. Scripts maliciosos são executados pelo navegador da vítima porque o navegador confia na fonte do conteúdo, mesmo quando este não vem de onde parece vir.</p>
<p>A CSP torna possível para os administradores de servidores reduzir ou eliminar os vetores pelos quais ataques XSS podem ocorrer. Isso é feito pela especificação dos domínios que o navegador deve considerar como fontes válidas de scripts executáveis. Um navegador compatível com a CSP somente executará scripts carregados em arquivos recebidos dos domínios especificados, ignorando quaisquer outros scripts (incluindo scripts inline e atributos de eventos no HTML).</p>
<p>Como uma forma máxima de proteção, sites que nunca permitirão a execução de scripts podem optar por desabilitar a execução de scripts de forma global.</p>
<h2 id="Mitigando_ataques_de_packet_sniffing">Mitigando ataques de packet sniffing</h2>
<p>Além de restringir os domínios dos quais conteúdo pode ser carregado, o servidor pode especificar quais protocolos podem ser usados; por exemplo (e, idealmente, de um ponto de vista de segurança), um servidor pode especificar que todo o conteúdo deve ser carregado usando HTTPS.</p>
<div class="note">
  <strong>Nota:</strong> Uma estratégia de segurança de transmissão de dados completa inclui não apenas garantir o uso de HTTPS para transferência de dados, mas também marcar todos os cookies como seguros e redirecionar automaticamente páginas HTTP para as correspondentes HTTPS.</div>
<div class="note">
  <strong>Nota:</strong> Sites também podem utilizar o cabeçalho HTTP <a href="/en/Security/HTTP_Strict_Transport_Security" title="/en/Security/HTTP_Strict_Transport_Security">Strict-Transport-Security</a> para garantir que os navegadores conectem a eles apenas via um canal criptografado.</div>
<h2 id="Veja_tamb.C3.A9m">Veja também</h2>
<ul>
  <li><a href="/en/Security/CSP/Using_Content_Security_Policy" title="en/Security/CSP/Using Content Security Policy">Usando a Content Security Policy</a></li>
  <li><a href="/en/Security/CSP/CSP_policy_directives" title="en/Security/CSP/CSP policy directives">Diretivas da política CSP</a></li>
  <li><a href="/en/Security/CSP/Using_CSP_violation_reports" title="en/Security/CSP/Using CSP violation reports">Usando relatórios de violação da CSP</a></li>
</ul>
<h2 id="Especifica.C3.A7.C3.A3o">Especificação</h2>
<ul>
  <li>{{ spec("https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/latest.html", "Content Security Policy (Unofficial Draft)") }}</li>
</ul>
<div class="noinclude">
  <p>{{ languages( { "en": "en/Introducing_Content_Security_Policy", "ja": "ja/Introducing_Content_Security_Policy" } ) }}</p>
</div>
<p>&nbsp;</p>
Reverter para esta revisão