Polovica stránky sa vykreslí, jeden štýlový list zostáva v paneli Sieť sivý a klient VPN stále hlási zdravý tunel. Všetky tri pozorovania platia naraz, pretože prehliadač posúdil požiadavku, ktorú stránka vytvorila, a tunel v tom posúdení nemal žiadne slovo. Prípad uzatvára rozhodnutie, nie nastavenie: opraviť odkaz, eskalovať ho na vlastníka hostiteľa, alebo sa závislosti vzdať. Každá z týchto možností má lacný test a voľba tej nesprávnej stojí jeden cyklus podpory.

Prečo tunel nemôže pokryť podriadený zdroj

Zmiešaný obsah začína dokumentom HTTPS, ktorý si vyžiada podriadený zdroj cez obyčajný HTTP. Každá adresa URL sa posudzuje podľa vlastnej schémy, takže ochrana nadradeného dokumentu sa nikdy nerozšíri na podriadenú požiadavku. Šifrovanie pridané pod prehliadač mení to, čo ide po drôte, nie http://, ktoré si vyžiadalo označenie.

Súčasné prehliadače delia tieto požiadavky do dvoch skupín a zaobchádzajú s nimi odlišne. Skripty, štýlové listy, iframy a volania cez fetch, XMLHttpRequest alebo WebSocket sa odmietajú hneď, bez akéhokoľvek predchádzajúceho pokusu o povýšenie. Obrázky, zvuk a video sa prepisujú na https:// a žiadajú znova, a načítanie sa preruší, keď toto zabezpečené načítanie zlyhá. Adresa URL podriadeného zdroja, ktorého hostiteľom je holá IP adresa, je z povyšovania vyňatá, takže obrázok HTTP na hostiteľovi IP zostáva blokovaný, namiesto toho aby bol ticho opravený. Rozdelenie, vrátane tejto výnimky na povyšovateľnej strane, je zdokumentované v sprievodcovi Mozilly k zmiešanému obsahu. Chrome uplatňuje podobné odmietnutie na nezabezpečené stiahnutia začaté z bezpečnej stránky, a preto môže odkaz na PDF zomrieť, zatiaľ čo okolitá stránka vyzerá nedotknuto.

Sivý riadok je teda dôkaz, že kontrola funguje, nie dôkaz, že tunel prepustil holý text. Berte riadok ako zistenie, ktoré ukazuje na jeden odkaz, a nie na celú stránku.

Určte, komu nezabezpečený odkaz patrí

Zoraďte závadnú adresu URL podľa toho, kde vzniká, skôr než čokoľvek zmeníte. Tá odpoveď rozhoduje, či dnes môžete vydať opravu, či ju musí vydať dodávateľ, alebo či závislosť musí stránku opustiť. Prečítajte ju v stĺpci Iniciátor v paneli Sieť, pretože označenie na obrazovke sa často skladá za behu.

Odkiaľ adresa URL pochádzaKto ju môže opraviťPrvý krok
Zakódované natvrdo v šablóne alebo časti, ktorú nasadzujeteVyNahraďte ju tvarom https:// a potom vyprázdnite vyrovnávaciu pamäť
Vložené správcom značiek alebo balíčkom dodávateľaDodávateľ, s vaším tiketomPošlite presnú adresu URL, typ požiadavky a riadok konzoly
Servírované iba na porte 80 bez poslucháča TLSVlastník hostiteľaPožiadajte o TLS, postavte predňho niečo, čo ovládate, alebo ho opustite

Keď hostiteľ už odpovedá na 443 a iba odkaz hovorí http, oprava je miestna: zmeňte odkaz, vyprázdnite vyrovnávaciu pamäť stránky a potvrďte, že sa riadok zmení na https. Hostiteľa, ktorý počúva iba na porte 80, nemožno úpravou uviesť do súladu, takže zdroj sa presunie, postaví sa predňho niečo, čo ovládate, alebo zmizne. Adresa URL vložená správcom značiek sa objavuje ďalej, aj keď je vaša šablóna čistá, a ten prípad patrí do tiketu s presnou adresou URL a riadkom konzoly v prílohe. Hovoriť personálu, aby povolil nezabezpečený obsah, nie je žiadna z týchto možností, pretože vypína kontrolu pre každú lokalitu, ktorú tento profil prehliadača navštívi.

Opravte odkaz, nie nastavenie prehliadača

Znova načítajte zlyhávajúci tok so zachovaným sieťovým protokolom a prefiltrujte panel podľa podozrivého hostiteľa. Konzola uvádza adresu URL a direktívu, čo rozhodne, či bola požiadavka odmietnutá alebo povýšená, skôr než sa dotknete šablóny.

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

Dve podporné kontroly stoja za znalosť a žiadna nenahrádza opravu. Hlavička Content-Security-Policy s upgrade-insecure-requests prinúti prehliadač prepísať adresy URL podriadených zdrojov http skôr, než opustia stránku, čo zachytí staré odkazy, ktoré ste ešte nenašli. Prepísaná požiadavka stále zlyháva, keď cieľový hostiteľ neposkytuje HTTPS, takže hlavička mení iba to, ktorú adresu URL prehliadač skúša. HSTS platí pre jednotlivých hostiteľov, čo znamená, že zásada na vašej vlastnej doméne nič nerobí pre CDN tretej strany, ktoré hlavičku nikdy neposlalo. Po úprave šablóny vyprázdnite vyrovnávaciu pamäť stránky a hľadajte staré meno hostiteľa vo vykreslenom HTML, pretože rovnaká adresa URL môže prísť aj cez časť, prekladový reťazec alebo pole databázy.

Sledujte aj presmerovania, pretože reťaz začínajúci na https:// môže pristáť v umiestnení http:// a prehliadač posudzuje posledný skok. Tvar -L druhého príkazu vyššie vypíše tú efektívnu adresu URL za vás. Ak je posledný skok čisté http, odkaz je stále nesprávny, aj keď upravený odkaz vyzeral dobre.

Potvrďte stránku konzolou a panelom siete

Znova načítajte s vypnutou vyrovnávacou pamäťou a prejdite tok znova, vrátane tlačidiel, ktoré načítavajú obsah na požiadanie. Prvé načítanie stránky skrýva lenivé widgety, dlaždice mapy a skripty prehrávača, ktoré sa objavia až po kliknutí. Konzola by nemala obsahovať žiadne položky zmiešaného obsahu a každý riadok, ktorého ste sa dotkli, by mal ukazovať https. Zachyťte konzolu a riadok požiadavky, než tiket zavriete, pretože tento stav je po ďalšom nasadení ťažké obnoviť.

Keď zdroj patrí niekomu inému, pošlite štyri veci: presnú adresu URL, typ požiadavky, text konzoly a stránku, kde sa objavuje. Skryte identifikátory relácie vo všetkom, čo vložíte do tiketu. Správa, ktorá iba hovorí, že obrázky sú rozbité, nedáva vlastníkovi nič na hľadanie.

Tunel ďalej robí svoju prácu, zatiaľ čo oprava leží v odkaze, ktorý požiadavku vytvoril. Po nasadení ešte raz hľadajte meno hostiteľa v šablóne a balíčku dodávateľa a prípad uzavrite až vtedy, keď v konzole nezostane žiadna zablokovaná položka zmiešaného obsahu.

Súvisiace články