Uma página tem conteúdo misto quando o HTML inicial é carregado por uma conexão HTTPS segura HTTPS, mas outros recursos (como imagens, vídeos, folhas de estilo e scripts) são carregados por uma conexão HTTP não segura. O nome se refere à mistura de conteúdo HTTP e HTTPS em uma única página.
Solicitar sub-recursos usando o protocolo HTTP não seguro enfraquece a segurança da página, porque essas solicitações são vulneráveis a ataques on-path, em que um invasor espiona uma conexão de rede e visualiza ou modifica a comunicação entre duas partes. Usando esses recursos, os invasores podem rastrear usuários e substituir conteúdo em um site. No caso de conteúdo misto ativo, eles podem assumir o controle total da página, não apenas dos recursos não seguros.
Embora muitos navegadores informem avisos de conteúdo misto ao usuário, o relatório geralmente é muito tarde: as solicitações não seguras já foram realizadas e a segurança da página está comprometida.
A maioria dos navegadores agora bloqueia conteúdo misto por motivos de segurança. Altere as solicitações de conteúdo não seguro para conteúdo seguro para garantir que a página continue sendo carregada corretamente.
Os dois tipos de conteúdo misto
Há dois tipos de conteúdo misto: ativo e passivo.
Conteúdo misto passivo, incluindo imagens, vídeo e áudio, não interage com o restante da página. Portanto, um ataque man-in-the-middle é restrito no que ele pode fazer se interceptar ou alterar esse conteúdo.
O conteúdo misto ativo interage com a página como um todo. Isso inclui scripts, folhas de estilo, iframes e qualquer outro código que o navegador possa baixar e executar. Ataques a conteúdo misto ativo permitem que um invasor faça quase qualquer coisa na página.
Conteúdo misto passivo
O conteúdo misto passivo é menos arriscado do que o conteúdo misto ativo, mas o risco ainda existe. Por exemplo, um invasor pode:
- Interceptar solicitações HTTP de imagens no seu site e trocar ou substituir essas imagens.
- Substituir as imagens nos botões para que os usuários as confundam e, por exemplo, excluam o conteúdo que pretendiam salvar.
- Desfigurar seu site substituindo suas imagens por conteúdo pornográfico.
- Substituir as imagens do produto por anúncios de outra coisa.
Mesmo que o invasor não altere o conteúdo do seu site, ele poderá rastrear os usuários por meio de solicitações de conteúdo misto. Eles também podem informar quais páginas um usuário visita e quais produtos ele visualiza com base em imagens ou outros recursos que o navegador carrega.
Se o conteúdo misto passivo estiver presente, a maioria dos navegadores indicará na barra de endereço que a página não é segura, mesmo quando a página em si é carregada por HTTPS.
Até recentemente, o conteúdo misto passivo era carregado em todos os navegadores, porque o bloqueio dele teria quebrado muitos sites. Isso agora está começando a mudar. Portanto, é fundamental atualizar todas as instâncias de conteúdo misto no seu site.
Em alguns casos, o Chrome faz upgrade automático do conteúdo misto passivo. Isso significa que, se um recurso tiver sido codificado como HTTP, mas estiver disponível por HTTPS, o navegador carregará a versão HTTPS. Se não houver uma versão segura, o recurso não será carregado.
Sempre que o Chrome detectar conteúdo misto ou fazer upgrade automático do conteúdo misto passivo, ele registrará mensagens detalhadas na guia Problemas do DevTools para aconselhar você a corrigir o problema específico.
Conteúdo misto ativo
O conteúdo misto ativo representa uma ameaça maior do que o conteúdo misto passivo. Um invasor pode interceptar e reescrever conteúdo ativo, usando-o para assumir o controle total da sua página ou até mesmo de todo o site. Isso permite que eles mudem qualquer aspecto da página, incluindo a exibição de conteúdo diferente, o roubo de senhas de usuários ou outras credenciais de login, o roubo de cookies de sessão do usuário ou o redirecionamento do usuário para um site completamente diferente.
Como os riscos de conteúdo misto ativo são muito altos, a maioria dos navegadores já bloqueia esse tipo de conteúdo por padrão para proteger os usuários, mas o comportamento varia entre fornecedores e versões de navegadores. No Chrome, é possível visualizar o conteúdo bloqueado na guia Problemas do DevTools.
A especificação de conteúdo misto
Os navegadores seguem a especificação de conteúdo misto, que define as categorias de conteúdo opcionalmente bloqueável e conteúdo bloqueável.
Um recurso se qualifica como conteúdo opcionalmente bloqueável "quando o risco de permitir o uso dele como conteúdo misto é maior do que o risco de quebrar partes significativas da Web". Esse é um subconjunto de conteúdo misto passivo.
Todo o conteúdo misto que não é opcionalmente bloqueável é considerado bloqueável, e precisa ser bloqueado pelo navegador.
Nos últimos anos, o uso de HTTPS aumentou muito, e se tornou o padrão claro na Web. Isso torna mais viável agora para os navegadores considerar o bloqueio de todo o conteúdo misto, mesmo os tipos de sub-recursos definidos na especificação de conteúdo misto como opcionalmente bloqueáveis.
Navegadores mais antigos
Alguns visitantes podem usar navegadores mais antigos. Diferentes versões de navegadores de diferentes fornecedores tratam o conteúdo misto de maneira diferente. No pior dos casos, navegadores e versões mais antigos não bloqueiam nenhum conteúdo misto, o que não é seguro para o usuário.
Ao carregar todos os recursos com segurança e corrigir os problemas de conteúdo misto, você garante que seu conteúdo fique visível e protege os usuários de conteúdo perigoso que navegadores mais antigos podem não bloquear.