Користувач надав зображення на HTTPS-сайті без змішаних попереджень вмісту


9

У мене є форум, на якому, як і на більшості форумів, користувачі можуть розміщувати зображення. Я налаштував HTTPS по всьому сайту, але, звичайно, більшість зовнішніх зображень пов’язані за допомогою HTTP, а не HTTPS. Тож завантаження форуму через HTTPS показує змішані попередження щодо вмісту тощо.

Які стратегії вирішення цієї проблеми? Деякі зображення є з мого власного сайту, тому я можу переписати ці URL-адреси для використання HTTPS, оскільки я знаю, що це буде працювати. Але для зовнішніх URL-адрес багато хто не працює з HTTPS, тому я не можу зробити перезапис ковдри.

Я можу переписати незахищені зображення на посилання замість вбудованих зображень, але це не виглядає чудово і може заплутати користувачів. Будь-які кращі рішення?


2
Ви можете використовувати camo
wb9688

2
Google не вирішив це для пошуку зображень. Пошук зображень "не захищений:" i.imgur.com/8XVTQsi.png
Стівен Остерміллер


1
Краще я не знаю, і це може спричинити порушення законодавства про авторські права, але одним із технічних рішень було б зробити копію зображення та подати з домену під вашим контролем над HTTPS ...
CVn

1
Спосіб убогих людей: Після збереження / редагування ви можете застосувати логіку, щоб переписати всі дані, які мають бути src="http://someimage.jpg"відносно структурованих, src="//someimage.jpg"а не просто ... або просто перевірити їх. Якщо ви хочете, щоб суворий зелений замок (де незахищений образ не підмивав ваш замок) застосуйте HSTS. Потім в інтерфейсі редактора зробіть зауваження, що зображення в даний час повинні бути доступні через HTTPS, інакше вони взагалі не відображатимуться. Щось на кшталт "На жаль, ви зробили помилку. Щоб запобігти зловживанням та атакам MITM, усі медіа повинні використовувати HTTPS. Поверніться та виправте його або виберіть іншого постачальника зображень."
dhaupin

Відповіді:


1

Неможливо мати безпечні ресурси на захищеній сторінці та не отримувати попередження про змішаний вміст.

Для користувальницьких агентів, які його підтримують, upgrade-insecure-requestsдиректива - це інструкція намагатися завантажити ресурс через https або провалити спробу.

Інші користувацькі агенти ігноруватимуть директиву, продовжуючи завантажувати незахищені ресурси.

Ось стаття на сайті розробників Google, де обговорюються цей та інші варіанти.


1

Щойно зрозумів, що я ніколи не розміщував своє рішення. Відповідь надається в коментарі Стефана є те , що вирішити її для мене. Коротше кажучи, я створив проксі-скрипт, який виконує такі дії:

  1. Якщо зображення https, залиште його в спокої.
  2. Якщо зображення є http та з сайту, який, як відомо, підтримує https (наприклад, власний сайт, imgur.com тощо), тоді перепишіть на https.
  3. В іншому випадку, якщо зображення є http, перепишіть його для використання http://example.com/imgproxy?img=ORIGINALURL&hash=KEY

Потім проксі-скрипт отримує зображення HTTP, кешує його локально та виводить дані зображення. При повторних запитах він безпосередньо виводить кешовані дані. Відповідна відповідь описує хеш безпеки та інші деталі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.