Tengo un foro donde, como la mayoría de los foros, los usuarios pueden publicar imágenes. He configurado HTTPS en todo el sitio, pero, por supuesto, la mayoría de las imágenes externas están vinculadas usando HTTP, no HTTPS. Por lo tanto, cargar el foro a través de HTTPS muestra advertencias de contenido mixto, etc.
¿Cuáles son algunas estrategias para abordar este problema? Algunas de las imágenes son de mi propio sitio, así que puedo reescribir esas URL para usar HTTPS, ya que sé que funcionará. Pero para las URL externas, muchas no funcionan con HTTPS, por lo que no puedo hacer una reescritura general.
Podría reescribir imágenes no seguras en enlaces en lugar de imágenes en línea, pero eso no se ve muy bien y puede ser confuso para los usuarios. ¿Alguna mejor solución?
src="http://someimage.jpg"
estructurados en susrc="//someimage.jpg"
lugar ... o simplemente validarlos. Si desea un bloqueo verde estricto (donde una imagen insegura no se ganará su bloqueo) aplique HSTS. Luego, en la interfaz del editor, tenga en cuenta que las imágenes actualmente deben estar disponibles a través de HTTPS, de lo contrario, no se mostrarán en absoluto. Algo así como "Vaya, cometió un error. Para evitar abusos y ataques MITM, todos los medios deben usar HTTPS. Regrese y corríjalo, o elija otro proveedor de imágenes".Respuestas:
No es posible tener recursos inseguros en una página segura y no recibir la advertencia de contenido mixto.
Para los agentes de usuario que lo admiten, la
upgrade-insecure-requests
directiva es una instrucción para intentar cargar el recurso a través de https o no intentarlo.Otros agentes de usuario ignorarán la directiva y continuarán cargando los recursos inseguros.
Aquí hay un artículo en el sitio de Google Developers que analiza esta y otras opciones.
fuente
Me acabo de dar cuenta de que nunca publiqué mi solución. La respuesta proporcionada en el comentario de Stephen es lo que me resolvió. En resumen, creé un script proxy que hace lo siguiente:
http://example.com/imgproxy?img=ORIGINALURL&hash=KEY
Luego, el script proxy recupera la imagen HTTP, la almacena en caché localmente y genera los datos de la imagen. En solicitudes repetidas, envía los datos en caché directamente. La respuesta SO vinculada describe el hash de seguridad y otros detalles.
fuente