Половина странице се исцртава, једна стилска датотека се приказује сивом у табли Мрежа, а ВПН клијент и даље извештава о здравом тунелу. Сва три запажања су истовремено тачна, јер је прегледач просудио захтев који је страница упутила, а тунел није имао гласа у тој просуди. Случај затвара одлука, а не подешавање: поправити референцу, ескалирати је ономе који поседује хост или напустити зависност. Свака од тих опција има јефтин тест, а избор погрешне кошта један циклус подршке.

Зашто тунел не може да покрије подресурс

Мешовити садржај почиње HTTPS документом који тражи подресурс преко обичног HTTP-а. Сваки URL се просуђује према сопственој шеми, па се заштита надређеног документа никада не протеже на подређени захтев. Шифровање додато испод прегледача мења оно што иде жицом, не http:// који је ознака затражила.

Тренутни прегледачи деле те захтеве у две групе и различито их третирају. Скрипте, стилске датотеке, ифрамеови и позиви преко fetch, XMLHttpRequest или WebSocket одбијају се одмах, без икаквог претходног покушаја надоградње. Слике, звук и видео се преписују у https:// и поново траже, а учитавање се прекида када то сигурно добављање не успе. URL подресурса чији је хост гола IP адреса изузет је од надоградње, па HTTP слика на IP хосту остаје блокирана уместо да буде тихо поправљена. Подела, укључујући то изузеће на надоградивој страни, документована је у Мозилином водичу о мешовитом садржају. Chrome примењује слично одбијање на несигурна преузимања покренута са сигурне странице, због чега PDF веза може да умре док околна страница изгледа нетакнуто.

Сиви ред је дакле доказ да контрола ради, а не доказ да је тунел пропустио чисти текст. Третирајте ред као налаз који упућује на једну референцу, не на целу страницу.

Утврдите коме припада несигурна референца

Разврстајте спорни URL према томе где настаје пре него што било шта промените. Тај одговор одлучује можете ли данас да испоручите поправку, мора ли је добављач да објави или мора зависност да напусти страницу. Прочитајте га у колони Initiator у табли Мрежа, јер се ознака на екрану често саставља током извођења.

Одакле URL долазиКо га може поправитиПрви корак
Тврдо кодиран у шаблону или делу који објављујетеВиЗамените га обликом https:// и затим испразните кеш
Убачен од стране менаџера ознака или добављачког пакетаДобављач, са вашим тикетомПошаљите тачан URL, врсту захтева и ред конзоле
Сервира се само на порту 80 без TLS слушаоцаВласник хостаЗатражите TLS, ставите испред нешто што контролишете или га напустите

Када хост већ одговара на 443 и само референца каже http, поправка је локална: промените референцу, испразните кеш странице и потврдите да ред прелази на https. Хост који слуша само на порту 80 не може се уређивањем довести у склад, па се ресурс премешта, испред њега се ставља нешто што контролишете или нестаје. URL убачен од менаџера ознака и даље се појављује чак и када је ваш сопствени шаблон чист, а тај случај припада тикету са тачним URL-ом и редом конзоле у прилогу. Рећи особљу да дозволи несигуран садржај није ниједна од тих опција, јер искључује проверу за сваки сајт који тај профил прегледача посети.

Поправите референцу уместо подешавања прегледача

Поново учитајте ток који не успева са сачуваним мрежним записом и филтрирајте таблу према хосту који сумњате. Конзола наводи URL и директиву, што разрешава је ли захтев одбијен или надограђен пре него што дотакнете шаблон.

curl -sSI https://cdn.example.org/vendor.js | head -n 1
curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' -L https://cdn.example.org/vendor.js

Две пратеће контроле вреди знати и ниједна не замењује поправку. Заглавље Content-Security-Policy са upgrade-insecure-requests наводи прегледач да препише URL-ове http подресурса пре него што напусте страницу, што хвата старе референце које још нисте пронашли. Преписани захтев и даље не успева када циљни хост не сервира HTTPS, па заглавље мења само који URL прегледач покушава. HSTS важи по хосту, што значи да правило на вашој сопственој домени не чини ништа за CDN треће стране који никада није послао заглавље. Након измене шаблона испразните кеш странице и потражите старо име хоста у исцртаном HTML-у, јер исти URL може доћи и кроз део, преводни низ или поље базе података.

Пратите и преусмеравања, јер ланац који почиње на https:// може да слети на http:// локацију и прегледач просуђује задњи скок. Облик -L друге наредбе горе исписује тај стварни URL уместо вас. Ако је задњи скок чисти http, референца је и даље погрешна, иако је веза коју сте уредили изгледала добро.

Потврдите страницу конзолом и таблом мреже

Поново учитајте са онемогућеним кешом и прођите ток још једном, укључујући дугмад која учитавају садржај на захтев. Прво учитавање странице скрива лење виџете, плочице мапе и скрипте репродуктора који се појављују тек након клика. Конзола не би смела да садржи уносе мешовитог садржаја и сваки ред који сте дотакли требало би да приказује https. Снимите конзолу и ред захтева пре него што затворите тикет, јер је то стање након следећег увођења тешко реконструисати.

Када ресурс припада некоме другом, пошаљите четири ствари: тачан URL, врсту захтева, текст конзоле и страницу на којој се појављује. Сакријте идентификаторе сесије у свему што залепите у тикет. Извештај који само каже да су слике сломљене не даје власнику ништа за претрагу.

Тунел наставља да ради свој посао док поправка лежи у референци која је створила захтев. Након увођења још једном потражите име хоста у шаблону и добављачком пакету и затворите случај тек када у конзоли не остане ниједан блокирани унос мешовитог садржаја.

Повезани чланци