Това съобщение се получава в браузъра Firefox, когато сайтът се зарежда по HTTPS връзка, но някои елементи от него все още се извикват по несигурна HTTP връзка.
В Chrome няма да се получи индикация за смесено съдържание в адресната лента, но подобни съобщения може да се видят в Console през инструмента му DevTools.
Защо се получава предупреждението за смесено съдържание?
Когато даден сайт се зарежда през HTTPS (https://mysupersite.com
), връзката със сървъра се криптира чрез ползването на TLS/SSL (SSL сертификат). По този начин данните, предавани между потребителя и сървъра, са в криптиран вид и са защитени от проследяване и разчитане от трети лица.
Когато обаче на този сайт има вътрешни или външни ресурси, които се изтеглят през некриптирана връзка (HTTP), браузърите показват предупредителни съобщения и може да блокират зареждането на тези ресурси.
Грешката Mixed Content (смесено съдържание) обикновено се появява, когато сме мигрирали сайта от HTTP към HTTPS, но някои ресурси все още се зареждат през HTTP.
Когато има HTTP ресурси на сайт със сигурна връзка, тези ресурси се определят като смесено съдържание (mixed content). Например: Изображението http://mysupersite.com/image.png
е mixed content когато е заредено през https://mysupersite.com
.
Несигурното смесено съдържание се разделя в две категории:
- Пасивно смесено съдържание:
<img>
,<audio>
,<video>
и други. - Активно смесено съдържание:
<script>
,<link>
,"XMLHttpRequest"
,<iframe>
, CSS (когато се използва url атрибута),<object>
(data атрибут) и т.н.
В уеб браузъри като Mozilla Firefox, Google Chrome и Opera автоматично се блокира активното несигурно съдържание например .js
скриптове, XMLHttpRequest object
заявки и т.н. Други несигурни ресурси може да бъдат заредени например .jpg
, .png
и други изображения.
Данните предавани по HTTPS не могат да се прихванат и променят, но данните, предавани по HTTP, могат. Докато браузърът зарежда елементите на сайта през сигурна връзка, отделно прави връзка със сървъра и през HTTP, за да зареди смесеното съдържание. Тези некриптирани данни може да се прихванат и използват за злонамерено действие от трето лице.
Кой ресурс от сайта не се зарежда през HTTPS?
Можете да откриете елементите от съдържанието на сайта, които се зареждат през HTTP, по няколко начина.
1. Погледнете изходния код на страницата и потърсете URL адреси започващи с http://.
Ресурсите може да са зададени в кода на сайта, с пълен адрес до тях, например http://mysupersite.com/image.png.
За да видите кода на дадена уеб страница, заредете уеб сайта през сигурна връзка (https://mysupersite.com) и натиснете едновременно клавишите от клавиатурата Ctrl и U. Тази клавишна комбинация работи при повечето уеб браузъри, но ако не се отвори нищо, потърсете опция в браузъра като „View Page Source“, „Преглед на изходния код на страницата“ или подобно.
След като се визуализира кода можете да потърсите (Ctrl+F) за наличие на URL адреси започващи с http://.
2. Използвайте уеб инструмент за сканиране на сайта.
Следният уеб инструмент проверява всички ресурси, които се зареждат на дадения сайт и показва списък с несигурните елементи: https://www.whynopadlock.com
3. Използвайте инструмент за уеб дизайнери в уеб браузъра.
При различните уеб браузъри можете да намерите различни помощни инструменти за проверка на елементите на уеб страницата. За Firefox и Chrome можете да отворите инструментите с F12.
Mozilla Firefox (инструмент Developer Tools)
В Mozilla Firefox можете да ползвате вградения инструмент за разработчици Developer Tools.
След като заредите сайта в браузъра, по https://, изберете от клавиатурата F12. Ще се отвори инструментът за разработчици Developer Tools. Кликнете на таб Network (1), за да видите ресурсите, които се зареждат на сайта. Презаредете с Ctrl+F5.
Лесно ще можете да отличите HTTP ресурсите, като включите да се показват параметрите Protocol, Scheme, Domain и Remote IP. За да изберете кои параметри да се показват, кликнете с десен бутон в лентата (!) и маркирайте желаните.
Всички ресурси (2) и (4), които са с Protocol HTTP/1.x, Scheme http, задраскано катинарче пред домейна и IP адрес:порт 80, са несигурни ресурси.
Когато ресурсът е зареден по сигурна HTTPS връзка (3), параметрите ще са Protocol HTTP/2 (h2), Scheme https, зелено катинарче пред домейна и IP адрес:порт 443.
Несигурните ресурси може да са зададени в самия код на сайта (mystyle.css) или в базата данни (image.png).
Ако сайтът е на WordPress, автоматична проверка за несигурни ресурси в него можете да направите през WordPress мениджъра в cPanel, през опцията „Проверка за HTTP ресурси (на HTTPS сайт)„.
Google Chrome (инструмент Developer tools)
В уеб браузъра Google Chrome също можете да използвате вградената функционалност Developer tools. За да видите заредените и блокираните ресурси на страницата, след като се зареди, изберете F12 или клавишна комбинация Ctrl + Shift + C. Отворете таба Security и погледнете съобщенията в Console, най-долу в прозореца.
Друг начин за стартиране на инструмента е, като кликнете с десен бутон независимо къде в страницата и от менюто изберете Inspect element (Проверка на елемента). Презаредете сайта (Ctrl + F5).
В отворилия се прозорец в долната част на екрана кликнете на индикатора (!) за съобщения за грешки.
В конзолата обърнете внимание на редовете с „Mixed Content: The page at … was loaded over HTTPS, but requested an insecure resource … This request has been blocked; the content must be served over HTTPS.“ и „Mixed Content: The page at … was loaded over HTTPS, but requested an insecure image … This content should also be served over HTTPS“.
Как може несигурните ресурси да се зареждат през HTTPS?
Несигурните ресурси може да се зареждат през HTTPS, като се променят адресите им в кода или базата данни на сайта. Ако ресурсът се намира в същия хостинг акаунт, под същия домейн, можете да зададете релативен адрес до него например:
src=“/wp-content/uploads/image.jpg“
Адресът може да бъде и по следния начин:
src=“//my-website.com/wp-content/uploads/image.jpg“
Ако ресурсът е на друг сървър, тоест външен ресурс, адреса му може да се зададе с https://:
src=“https://othersite.net/script.js“
или
src=“//other-website.com/resource/image.jpg“
Имайте предвид, че ако отдалеченият сайт не поддържа сигурна връзка, ресурсът няма да се изтегли през https. В такъв случай, можете да свалите ресурса и да го качите във вашия хостинг акаунт. След това можете да го извикате в кода с релативен път например „/wp-content/uploads/script.js“.
Ако ресурсът се извиква в стила (.css) на сайта, адреса му би могъл да се зададе по този начин:
background: url(„//my-website.com/wp-content/uploads/image.jpg“ …);
При готовите системи като WordPress, Joomla! и други, несигурните ресурси може да се получат при:
- Плъгин с некоректна настройка и системни файлове, в които адресите на ресурсите са записани с http://
- В някой файл на темата има извикване на ресурс с http:// (header.php …)
- Във файла за стила на темата е добавено извикване за ресурс с адрес http:// (style.css …)
- В самата статия/страница е сложен директен линк към картинка или друго, с пълен адрес започващ с http://…
- На сайта има извикване на външен ресурс, който е зададен с http://.
Вижте още:
Автоматично коригиране на адресите в базата данни и файловете на WordPress сайт | Help
Ръчно коригиране на адресите в базата данни на WordPress сайт | Help