Imágenes aportadas por el usuario en un sitio HTTPS sin advertencias de contenido mixto

9

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?

Cabra descontento
fuente
2
Podrías usar camuflaje ...
wb9688
2
Google no ha resuelto esto para la búsqueda de imágenes. La búsqueda de imágenes "no es segura": i.imgur.com/8XVTQsi.png
Stephen Ostermiller
2
Ver también en StackOverflow: Manejo del contenido HTTP en páginas HTTPS
Stephen Ostermiller
1
Mejor no lo sé, y puede entrar en conflicto con la legislación de derechos de autor, pero una solución técnica sería hacer una copia de la imagen y servir desde un dominio bajo su control, a través de HTTPS ...
un CVn
1
La manera pobre del hombre: al guardar / editar, puede aplicar la lógica para reescribir todos los datos que están destinados a ser src="http://someimage.jpg"estructurados en su src="//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".
dhaupin

Respuestas:

1

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-requestsdirectiva 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.

Robert K. Bell
fuente
1

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:

  1. Si la imagen es https, déjala en paz.
  2. Si la imagen es http y proviene de un sitio que admite https (por ejemplo, mi propio sitio, imgur.com, etc.), vuelva a escribir en https.
  3. De lo contrario, si la imagen es http, vuelva a escribirla para usar 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.

Cabra descontento
fuente