Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1307

Trusted Types

Revisado porCybersecurity entrepreneur & security researcher

O que é Trusted Types?

Trusted TypesAPI do navegador e diretiva CSP que evita XSS baseado em DOM exigindo que os sinks perigosos do DOM recebam valores tipados e validados por política, em vez de strings cruas.


Trusted Types é uma defesa concebida pela Google e padronizada como Working Draft do W3C para eliminar o XSS baseado em DOM na sua raiz. Quando ativada através das diretivas CSP require-trusted-types-for 'script' e trusted-types, o navegador recusa-se a executar os sinks de injeção — innerHTML, outerHTML, document.write, eval, setTimeout com uma string, script.src, iframe.srcdoc e dezenas de outros — sempre que estes recebem uma string simples. Em vez disso, o código deve passar objetos tipados (TrustedHTML, TrustedScript, TrustedScriptURL) criados por políticas nomeadas e auditadas através de trustedTypes.createPolicy(...). Isto reduz os milhares de sinks inseguros de uma base de código a um punhado de funções de política revisáveis.

O mecanismo está presente nos navegadores baseados em Chromium (Chrome e Edge desde a v83, maio de 2020); as implementações no Firefox e no Safari continuam em curso, por isso é implantado como defesa em profundidade em conjunto com uma CSP rigorosa, e não como único controlo. Uma política especial chamada default interceta qualquer string que escape, permitindo às equipas encaminhá-la através de um sanitizador — o DOMPurify devolve nativamente TrustedHTML, portanto DOMPurify.sanitize(html, {RETURN_TRUSTED_TYPE: true}) satisfaz a imposição. A Google atribui ao Trusted Types o mérito de ter reduzido o XSS de DOM a quase zero em produtos como o Search e o Photos, uma vez que a maioria dos seus historicos de bugs de XSS eram do lado do cliente. Comece por implantá-lo em modo Content-Security-Policy-Report-Only para detetar violações antes de impor.

flowchart TD
  A[String não confiável<br/>location.hash, postMessage] --> B{Atribuída a um<br/>sink do DOM? ex. innerHTML}
  B -->|Trusted Types imposto| C{O valor é um<br/>objeto TrustedHTML?}
  C -->|Sim, de política auditada| D[Sink executa em segurança]
  C -->|Não, string crua| E[Navegador lança<br/>TypeError + relatório CSP]
  E --> F[política default<br/>DOMPurify sanitiza]
  F --> C
  B -->|Sem Trusted Types| G[Sink executa string crua<br/>XSS baseado em DOM]

Exemplos

  1. 01

    Content-Security-Policy: require-trusted-types-for 'script'; trusted-types default;

  2. 02

    Substituir element.innerHTML = userInput por element.innerHTML = policy.createHTML(userInput).

Perguntas frequentes

O que é Trusted Types?

API do navegador e diretiva CSP que evita XSS baseado em DOM exigindo que os sinks perigosos do DOM recebam valores tipados e validados por política, em vez de strings cruas. Pertence à categoria Segurança de aplicações da cibersegurança.

O que significa Trusted Types?

API do navegador e diretiva CSP que evita XSS baseado em DOM exigindo que os sinks perigosos do DOM recebam valores tipados e validados por política, em vez de strings cruas.

Como se defender contra Trusted Types?

As defesas contra Trusted Types costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Termos relacionados

Ver também