Ich habe ein Forum, in dem Benutzer, wie in den meisten Foren, Bilder posten können. Ich habe HTTPS auf der gesamten Site eingerichtet, aber natürlich werden die meisten externen Bilder über HTTP und nicht über HTTPS verknüpft. Wenn Sie das Forum also über HTTPS laden, werden Warnungen zu gemischten Inhalten usw. angezeigt.
Welche Strategien gibt es, um dieses Problem anzugehen? Einige der Bilder stammen von meiner eigenen Website, sodass ich diese URLs neu schreiben kann, um HTTPS zu verwenden, da ich weiß, dass es funktionieren wird. Bei externen URLs funktionieren viele jedoch nicht mit HTTPS, sodass ich kein pauschales Umschreiben durchführen kann.
Ich könnte nicht sichere Bilder in Links anstatt in Inline-Bilder umschreiben, aber das sieht nicht gut aus und kann für Benutzer verwirrend sein. Irgendwelche besseren Lösungen?
src="http://someimage.jpg"
für die relative Struktur vorgesehen sind, neu zu schreibensrc="//someimage.jpg"
... oder sie einfach zu validieren. Wenn Sie eine strikte grüne Sperre wünschen (bei der ein unsicheres Bild Ihre Sperre nicht beeinträchtigt), erzwingen Sie HSTS. Notieren Sie dann in der Editor-Oberfläche, dass Bilder derzeit über HTTPS verfügbar sein müssen, da sie sonst überhaupt nicht angezeigt werden. Etwas wie "Ups, Sie haben einen Fehler gemacht. Um Missbrauch und MITM-Angriffe zu verhindern, müssen alle Medien HTTPS verwenden. Gehen Sie zurück und korrigieren Sie es oder wählen Sie einen anderen Bildanbieter."Antworten:
Es ist nicht möglich, unsichere Ressourcen auf einer sicheren Seite zu haben und keine Warnung zu gemischten Inhalten zu erhalten.
Für Benutzeragenten, die dies unterstützen, ist die
upgrade-insecure-requests
Anweisung eine Anweisung, um zu versuchen, die Ressource über https zu laden, oder um es nicht zu versuchen.Andere Benutzeragenten ignorieren die Anweisung und laden weiterhin die unsicheren Ressourcen.
In diesem Artikel auf der Google Developers-Website werden diese und andere Optionen erläutert.
quelle
Ich habe gerade festgestellt, dass ich meine Lösung nie veröffentlicht habe. Die Antwort in Stephens Kommentar hat es für mich gelöst. Kurz gesagt, ich habe ein Proxy-Skript erstellt, das Folgendes ausführt:
http://example.com/imgproxy?img=ORIGINALURL&hash=KEY
Anschließend ruft das Proxy-Skript das HTTP-Image ab, speichert es lokal zwischen und gibt die Image-Daten aus. Bei wiederholten Anfragen werden die zwischengespeicherten Daten direkt ausgegeben. Die verknüpfte SO-Antwort beschreibt den Sicherheits-Hash und andere Details.
quelle