HTTPS-сайт: загрузка внешнего CSS через HTTP

У меня есть безопасное (HTTPS) веб-приложение, которому необходимо загрузить пользовательскую таблицу стилей из небезопасного (HTTP) источника (собственный веб-сайт клиента). Это заблокировано современными браузерами, однако мне нужен обходной путь, потому что:

1) Я не могу просить своих клиентов размещать их пользовательские таблицы стилей на HTTPS. У них нет ноу-хау, а у некоторых из них есть политика в отношении того, на каких хостах и ​​в каких регионах можно размещать вещи (по иронии судьбы, не в отношении HTTPS). 2) Я, очевидно, не могу попросить конечного пользователя отключить функции безопасности в своем браузере.

Я попытался загрузить таблицы стилей с помощью <style>@import url(...);</style>, я попытался создать iframe с src="about:blank" и загрузить оттуда таблицу стилей, я попробовал XHR и выборку (но для этого потребуется включить CORS на удаленном хосте, что я не могу разумно ожидать).

Если не считать создания безопасного прокси-сервера, который будет обслуживать любую таблицу стилей в Интернете, есть ли какой-либо другой обходной путь, который мне здесь не хватает?

Любое волшебство, чтобы заставить мою страницу загружать таблицу стилей из разных источников через HTTP?


person sstur    schedule 08.03.2016    source источник


Ответы (3)


Если существовал обходной путь для загрузки небезопасных ресурсов на защищенных страницах, его следует исправить как можно скорее. Нет, политика существует, потому что без HTTPS на всех ресурсах вы не защищены по-настоящему. Любое HTTP-соединение может быть перехвачено и взломано посредником, поэтому страница не защищена. Даже такая мелочь, как таблица стилей, может подорвать эту безопасность.

Вам придется предоставлять таблицу стилей через HTTPS, и если ваши клиенты не могут этого сделать, вам придется сделать это за них.

person deceze♦    schedule 08.03.2016
comment
Если есть обходной путь для загрузки небезопасных ресурсов на защищенных страницах, его следует исправить как можно скорее. Это имеет смысл. Однако мы можем явно загружать небезопасные ресурсы, используя XHR, даже междоменные. Политика существует (если я правильно понимаю) для предотвращения непреднамеренной загрузки небезопасных ресурсов с помощью тега таблицы стилей/скрипта, который может стать жертвой MITM. Это хорошая политика. Я видел случаи, когда интернет-провайдер внедрял JS на страницу для показа рекламы. Но политики должны устанавливать безопасные значения по умолчанию, но при этом позволять разработчику переопределять параметры для особых случаев. Вот что я имею в виду под обходным путем. - person sstur; 29.03.2016

Возможно ли загрузить их CSS на стороне сервера и предоставить его своим пользователям через HTTPS?

person Steven Lemmens    schedule 08.03.2016

Я попытался сделать то же самое с веб-приложением, которое я создал. Настоящая проблема с тем, что вы хотите сделать, это браузер. Это не позволяет безопасному соединению быть испорченным небезопасным соединением, особенно когда вы хотите что-то внедрить на этой странице. Я использовал эту технику:

document.createElement("link") 

вводить. И поскольку безопасность браузера является большой проблемой, я не думаю, что вы найдете взлом. Удачи! :)

person miqueloi    schedule 08.03.2016