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?
src="http://someimage.jpg"
relativos ao parente estruturadosrc="//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".Respostas:
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-requests
diretiva é 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.
fonte
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:
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.
fonte