O que é conteúdo misto
Conteúdo misto ocorre quando uma página entregue por HTTPS carrega sub-recursos por HTTP em texto simples. O documento de nível superior é criptografado e autenticado, mas as buscas inseguras por scripts, folhas de estilo, imagens, fontes ou requisições XHR/fetch não são. Os navegadores o classificam em duas categorias. O conteúdo misto ativo, como scripts, folhas de estilo, iframes e chamadas fetch, pode alterar a página inteira e é bloqueado de imediato pelos navegadores modernos. O conteúdo misto passivo, como imagens, áudio e vídeo, não consegue reescrever a página, mas ainda vaza informações e pode ser trocado, então os navegadores cada vez mais o atualizam ou bloqueiam também. O ícone de cadeado que o usuário vê reflete o documento de topo, e é por isso que o conteúdo misto silencioso é enganoso.
Por que o conteúdo misto é um risco
Um sub-recurso HTTP trafega sem autenticação pela rede, então qualquer um posicionado entre o usuário e o servidor, em um Wi-Fi compartilhado, um roteador malicioso ou um upstream comprometido, pode lê-lo ou reescrevê-lo em trânsito. Reescrever um script carregado por HTTP equivale, na prática, à injeção arbitrária de JavaScript em uma página que, de outra forma, seria segura: o invasor herda a origem da página e pode roubar tokens de sessão, exfiltrar dados de formulários ou plantar um skimmer. Até ativos passivos podem ser alterados para falsificação de conteúdo ou usados para vazar sinais de referrer e de cookies. O conteúdo misto também mina silenciosamente as garantias que o HTTPS deveria oferecer, dando ao usuário uma falsa sensação de sessão totalmente protegida enquanto um elo fraco permanece aberto.
Eliminando o conteúdo misto
Sirva todos os recursos por HTTPS e referencie ativos com URLs https absolutas ou relativas ao protocolo. A diretiva CSP upgrade-insecure-requests instrui o navegador a reescrever automaticamente para HTTPS as requisições de sub-recursos HTTP elegíveis, e block-all-mixed-content faz o restante falhar de forma dura; combinar essas diretivas com HSTS mantém todo o caminho de entrega criptografado. Audite embeds third-party, que são uma fonte comum de chamadas HTTP dispersas. Como o conteúdo misto tem a ver fundamentalmente com o transporte, o papel da cside aqui é indireto: ela não gerencia certificados, mas, ao proxiar e analisar os payloads de scripts third-party, pode sinalizar quando um script carregado se comporta de forma maliciosa, qualquer que tenha sido o transporte que o entregou, e manter um registro forense do que de fato foi executado.