Смешанное содержимое за VPN: исправьте ресурс, а не туннель
Замок описывает документ, а не скрипты, которые он загружает. Прочитайте консоль, сохраните блокировку, исправьте ссылку в её источнике и затем проверьте страницу снова.
Страница HTTPS, загружающая скрипты по HTTP, делает два запроса с двумя разными уровнями защиты, и замок описывает только первый. Туннель этого не меняет, потому что защищает носитель, а не собственную схему ресурса. Браузер уже говорит, какой запрос не удался, если читать консоль, а не адресную строку. Три проверки ведут от частично работающей страницы к настоящему исправлению.
Читайте запрос, а не адресную строку
Документ, полученный по HTTPS, может ссылаться на скрипт, таблицу стилей, шрифт или фрейм по обычному HTTP. Эта ссылка — отдельный запрос, и именно на него жалуется браузер. Защита основного документа не распространяется обратно на неё, а туннель, несущий оба потока, не меняет ни одну из схем. Поэтому страница может быть одновременно действительно защищённой и действительно сломанной.
Называть ресурс просто включённым файлом не делает его замену безвредной.
Если небезопасное содержимое скрипта можно изменить в пути, а затем выполнить, оно может изменить поведение страницы, а это проблема крупнее косметического сбоя. Изображения несут меньший, но реальный риск, когда их изменяют по дороге. Замок не лжёт ни о чём. Он отвечает на более узкий вопрос, чем тот, который вы ему задали.
Знайте, какие ресурсы блокируются, а какие повышаются
Браузеры обращаются с каждым типом ресурса по-разному. рекомендации по смешанному содержимому разделяют запросы, повышаемые до HTTPS, и запросы, блокируемые полностью: скрипты, таблицы стилей и программные запросы находятся на заблокированной стороне, а изображения и медиа могут вместо этого повышаться или помечаться.
Это различие объясняет запутанные отчёты. Страница с заблокированным скриптом полностью теряет функцию, а страница с повышенным изображением выглядит хорошо и тихо изменила свой запрос. У задокументированных категорий есть и исключения, поэтому не предполагайте, что каждый URL данного типа будет успешно повышен. Читайте, что консоль говорит о конкретном запросе, вместо того чтобы рассуждать по расширению файла.
Заблокированный виджет не доказывает, что туннель отказал. Он доказывает, что браузер выполнил свою работу.
Исправьте ссылку в её источнике
Для владельца сайта исправление принадлежит тому месту, где был записан небезопасный URL: шаблон, таблица стилей, скрипт, собирающий URL-адреса, или компонент третьей стороны. Изменение видимого адреса страницы оставляет всё это нетронутым. Ищите в источнике хост и исправляйте каждую ссылку, а не только ту, которую консоль случайно назвала.
Затем убедитесь, что ресурс действительно отдаётся по HTTPS с действительной идентичностью, потому что смена схемы не может создать сервис, который там никогда не публиковался.
grep -rn "http://assets.example" ./templates
curl -sSI https://assets.example/widget.js | head -n 1Отслеживайте и перенаправления, потому что ссылка, начинающаяся с HTTPS, всё ещё может попасть на путь доставки открытым текстом. Когда у зависимости просто нет безопасной доставки, удалите или замените её через обычный процесс изменений, а не выпускайте обходное решение. Для пользователя оставьте защиты браузера включёнными и сообщите владельцу сайта URL ресурса, его тип и сообщение консоли. Никогда не распространяйте инструкции, которые велят сотрудникам разрешить небезопасное содержимое для одной страницы, потому что это исключение переживает инцидент, который его вызвал.
Проверьте страницу снова так, как её касаются пользователи
Отработайте операции, которые загружают ресурсы по требованию, а не только первый документ. Страницы подтягивают дополнительный код, данные и загрузки после нажатия кнопки, и эти запросы часто являются небезопасными. Подтвердите конкретные запросы и видимое поведение при всё ещё включённой защите. Тест, начинающийся с ослабленного профиля браузера, не может показать, что видит обычный пользователь.
У туннеля по-прежнему своя работа, и эта работа — сетевой доступ, а не целостность страницы.
Как только трафик покидает конечную точку туннеля, любой оставшийся HTTP-запрос ничего не получил от носителя. Исправьте путь ресурса и оставьте принуждение в браузере на месте. Относиться к ещё одному транспортному слою как к исправлению небезопасной зависимости — это путь, которым команда приходит к скрипту поддержки, отключающему контроль, который работал правильно.