Этот статья описывает проблему, которая возникает, когда посетители вашего веб-сайта запрашивают безопасную веб-страницу, содержащую небезопасные элементы.
Проблема
Когда посетители вашего веб-сайта запрашивают страницу с использованием безопасного соединения https://, в адресной строке веб-браузера может появиться сломанный замок. Кроме того, они могут получить предупреждение в своем браузере:
- Mozilla Firefox: “Соединение с этим веб-сайтом не является полностью безопасным, поскольку оно содержит незашифрованные элементы (такие как изображения).”
- Microsoft Internet Explorer: “Хотите просмотреть только содержимое веб-страницы, которое было доставлено безопасно? Эта веб-страница содержит контент, который не будет доставлен с использованием безопасного HTTPS-соединения, что может подвергнуть опасности безопасность всей веб-страницы.”
- Google Chrome: “Ваше соединение с example.com зашифровано с использованием шифрования 256 бит. Однако эта страница включает другие ресурсы, которые не являются безопасными. Эти ресурсы могут быть просмотрены другими в процессе передачи и могут быть изменены злоумышленником для изменения вида страницы.”
Причина
Эта проблема возникает потому, что веб-страница содержит гиперссылки на небезопасные элементы. Например, рассмотрим веб-страницу, содержащую следующий HTML-фрагмент:
<a href="http://www.example.com/images/picture.jpg">Просмотреть мою картину</a>
В этом HTML-фрагменте гиперссылка ссылается на небезопасный http:// ресурс (файл .jpg). Если пользователь запрашивает эту страницу, используя https:// соединение, сама страница зашифрована, но связанный с ней файл изображения – нет. В результате страница содержит безопасный и небезопасный контент, и браузер отображает предупреждающее сообщение пользователю.
Эта проблема может возникнуть с любым типом связанного с гиперссылками ресурса: библиотекой JavaScript, файлом CSS и т. д.
Решение
Рассмотрите способы решения этой проблемы:
1: Отправка заголовка Content-Security-Policy непосредственно из веб-сервера
Чтобы решить эту проблему, вы можете отправить заголовок Content-Security-Policy в HTTP-ответе. Этот заголовок указывает веб-браузерам обновлять небезопасные запросы на HTTPS.
Для веб-серверов Apache на Linux добавьте следующие строки в файл .htaccess (или файлы), которые вы используете на своем веб-сайте:
<IfModule mod_headers.c> Header always set Content-Security-Policy "upgrade-insecure-requests;" </IfModule>
2: Отправка директивы Content-Security-Policy из исходных файлов страницы
Как альтернативу, вы можете использовать следующий мета тег в исходных файлах страниц вашего сайта:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Дополнительная информация
Если вам нужна дополнительная информация о директиве upgrade-insecure-requests, посетите https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests.
Ищете надежную защиту для своего сайта? Получите правильный уровень защиты вместе с нашими вариантами SSL.