Imagens contribuídas pelo usuário em um site HTTPS sem avisos de conteúdo misto

9

Eu tenho um fórum em que, como a maioria dos fóruns, os usuários podem postar imagens. Eu configurei o HTTPS no site, mas é claro que a maioria das imagens externas é vinculada usando HTTP, não HTTPS. Portanto, carregar o fórum por HTTPS mostra avisos de conteúdo misto, etc.

Quais são algumas estratégias para enfrentar esse problema? Algumas imagens são do meu próprio site, para que eu possa reescrever esses URLs para usar HTTPS, pois sei que funcionará. Mas, para URLs externos, muitos não funcionam com HTTPS, portanto, não posso reescrever um conjunto.

Eu poderia reescrever imagens não seguras em links em vez de imagens embutidas, mas isso não parece ótimo e pode ser confuso para os usuários. Alguma solução melhor?

DisgruntledGoat
fonte
2
Você poderia usar camo ...
wb9688
2
O Google não resolveu isso para pesquisa de imagens. A pesquisa de imagens "não é segura": i.imgur.com/8XVTQsi.png
Stephen Ostermiller
2
Veja também no StackOverflow: Lidando com conteúdo HTTP em páginas HTTPS
Stephen Ostermiller
11
Melhor eu não sei, e isso pode colidir com a legislação de direitos autorais, mas uma solução técnica seria fazer uma cópia da imagem e servir a partir de um domínio sob seu controle, sobre HTTPS ...
um CVn
11
O modo pobre do homem: Ao salvar / editar, você pode aplicar a lógica para reescrever todos os dados que se destinam a serem src="http://someimage.jpg"relativos ao parente estruturado src="//someimage.jpg"... ou apenas validá-los. Se você deseja uma trava verde estrita (onde uma imagem insegura não troque sua trava), imponha o HSTS. Em seguida, na interface do editor, observe que as imagens atualmente devem estar disponíveis via HTTPS; caso contrário, elas não aparecerão. Algo como "Ops, você cometeu um erro. Para evitar abuso e ataques MITM, todas as mídias devem usar HTTPS. Volte e corrija-o ou escolha outro fornecedor de imagens".
precisa saber é o seguinte

Respostas:

1

Não é possível ter recursos não seguros em uma página segura e não receber o aviso de conteúdo misto.

Para agentes de usuário que a suportam, a upgrade-insecure-requestsdiretiva é uma instrução para tentar carregar o recurso por https ou falhar ao tentar.

Outros agentes do usuário ignoram a diretiva, continuando a carregar os recursos não seguros.

Aqui está um artigo no site do Google Developers discutindo essa e outras opções.

Robert K. Bell
fonte
1

Acabei de perceber que nunca publiquei minha solução. A resposta fornecida no comentário de Stephen é o que a resolveu para mim. Em resumo, criei um script proxy que faz o seguinte:

  1. Se a imagem for https, deixe-a em paz.
  2. Se a imagem for http e de um site conhecido por suportar https (por exemplo, meu próprio site, imgur.com etc.), reescreva para https.
  3. Caso contrário, se a imagem for http, reescreva-a para usar http://example.com/imgproxy?img=ORIGINALURL&hash=KEY

Em seguida, o script proxy busca a imagem HTTP, a armazena em cache localmente e gera os dados da imagem. Em solicitações repetidas, ele gera os dados em cache diretamente. A resposta SO vinculada descreve o hash de segurança e outros detalhes.

DisgruntledGoat
fonte