Pusė puslapio atvaizduojama, viena stilių lentelė tinklelio skydelyje lieka pilka, o VPN klientas vis dar praneša apie sveiką tunelį. Visi trys stebėjimai teisingi vienu metu, nes naršyklė įvertino puslapio pateiktą užklausą, o tunelis tame vertinime neturėjo balso. Bylą uždaro sprendimas, o ne nustatymas: pataisyti nuorodą, eskaluoti ją hosto savininkui arba atsisakyti priklausomybės. Kiekviena iš šių parinkčių turi pigų testą, o neteisingas pasirinkimas kainuoja palaikymo ciklą.

Kodėl tunelis negali apimti antrinio ištekliaus

Mišrus turinys prasideda nuo HTTPS dokumento, kuris prašo antrinio ištekliaus paprastu HTTP. Kiekvienas URL vertinamas pagal savo schemą, todėl pagrindinio dokumento apsauga niekada neperkeliama į antrinę užklausą. Šifravimas, pridėtas žemiau naršyklės, keičia tai, kas keliauja laidu, o ne http://, kurio prašė žymėjimas.

Dabartinės naršyklės skirsto šias užklausas į dvi grupes ir elgiasi su jomis skirtingai. Scenarijai, stilių lentelės, iframe ir iškvietimai per fetch, XMLHttpRequest arba WebSocket atmetami iš karto, be jokio išankstinio atnaujinimo bandymo. Vaizdai, garsas ir vaizdo įrašai perrašomi į https:// ir prašomi iš naujo, o įkėlimas nutraukiamas, kai tas saugus gavimas nepavyksta. Antrinio ištekliaus URL, kurio hostas yra plikas IP adresas, atleidžiamas nuo atnaujinimo, todėl HTTP vaizdas IP hoste lieka užblokuotas, o ne tyliai pataisomas. Šis skirstymas, įskaitant tą išimtį atnaujinamoje pusėje, dokumentuotas „Mozilla“ mišraus turinio vadove. Chrome taiko panašų atmetimą nesaugiems atsisiuntimams, pradėtiems iš saugaus puslapio, todėl PDF nuoroda gali mirti, kol aplinkinis puslapis atrodo nepažeistas.

Pilka eilutė todėl yra įrodymas, kad kontrolė veikia, o ne įrodymas, kad tunelis praleido atvirą tekstą. Traktuokite eilutę kaip radinį, nurodantį vieną nuorodą, o ne visą puslapį.

Nustatykite, kam priklauso nesaugi nuoroda

Surikiuokite ginčytiną URL pagal tai, kur jis atsiranda, prieš ką nors keisdami. Tas atsakymas nusprendžia, ar šiandien galite išleisti pataisymą, ar jį turi išleisti tiekėjas, ar priklausomybė turi palikti puslapį. Perskaitykite jį stulpelyje Initiator tinklelio skydelyje, nes ekrane rodomas žymėjimas dažnai surenkamas vykdymo metu.

Iš kur ateina URLKas gali jį pataisytiPirmas žingsnis
Standžiai įkoduota šablone arba dalyje, kurią diegiateJūsPakeiskite jį https:// forma ir tada išvalykite podėlį
Įterptas žymų tvarkyklės arba tiekėjo paketoTiekėjas, su jūsų bilietuAtsiųskite tikslų URL, užklausos tipą ir konsolės eilutę
Tiekiamas tik 80 prievadu be TLS klausytojoHosto savininkasPaprašykite TLS, pastatykite prieš jį ką nors savo arba jo atsisakykite

Kai hostas jau atsako 443 prievadu ir tik nuoroda sako http, pataisymas yra vietinis: pakeiskite nuorodą, išvalykite puslapio podėlį ir patvirtinkite, kad eilutė tampa https. Hostas, kuris klausosi tik 80 prievadu, negali būti suderintas redaguojant, todėl išteklius persikelia, prieš jį pastatoma ką nors, ką kontroliuojate, arba jis išnyksta. Žymų tvarkyklės įterptas URL ir toliau pasirodo net tada, kai jūsų pačių šablonas švarus, ir tas atvejis priklauso bilietui su tiksliu URL ir konsolės eilute prieduose. Sakyti personalui, kad leistų nesaugų turinį, nėra nė viena iš šių parinkčių, nes tai išjungia patikrą kiekvienai svetainei, kurią aplanko tas naršyklės profilis.

Taisykite nuorodą, o ne naršyklės nustatymą

Iš naujo įkelkite nepavykstantį srautą išsaugoję tinklo žurnalą ir filtruokite skydelį pagal įtariamą hostą. Konsolė įvardija URL ir direktyvą, o tai nusprendžia, ar užklausa buvo atmesta, ar atnaujinta, prieš jums paliečiant šabloną.

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

Du pagalbiniai valdikliai verti dėmesio, ir nė vienas nepakeičia pataisymo. Content-Security-Policy antraštė su upgrade-insecure-requests priverčia naršyklę perrašyti http antrinių išteklių URL dar prieš jiems paliekant puslapį, o tai pagauna senas nuorodas, kurių dar neradote. Perrašyta užklausa vis tiek nepavyksta, kai tikslinis hostas neteikia HTTPS, todėl antraštė keičia tik tai, kurį URL naršyklė bando. HSTS galioja kiekvienam hostui, o tai reiškia, kad politika jūsų pačių domene nieko nedaro trečiosios šalies CDN, kuris niekada nesiuntė antraštės. Pakeitę šabloną išvalykite puslapio podėlį ir atvaizduotame HTML ieškokite seno hosto vardo, nes tas pats URL gali ateiti ir per dalį, vertimo eilutę arba duomenų bazės lauką.

Sekite ir peradresavimus, nes grandinė, prasidedanti https://, gali nusileisti http:// vietoje, o naršyklė vertina paskutinį šuolį. Antrosios komandos -L forma atspausdina tą efektyvų URL už jus. Jei paskutinis šuolis yra grynas http, nuoroda vis dar neteisinga, nors redaguota nuoroda atrodė gerai.

Patvirtinkite puslapį konsole ir tinklo skydeliu

Iš naujo įkelkite išjungę podėlį ir dar kartą pereikite srautą, įskaitant mygtukus, kurie įkelia turinį pagal poreikį. Pirmas puslapio įkėlimas paslepia tingius valdiklius, žemėlapio plyteles ir grotuvo scenarijus, kurie pasirodo tik po paspaudimo. Konsolėje neturėtų būti mišraus turinio įrašų, o kiekviena paliesta eilutė turėtų rodyti https. Užfiksuokite konsolę ir užklausos eilutę prieš uždarydami bilietą, nes tą būseną sunku atkurti po kito diegimo.

Kai išteklius priklauso kam nors kitam, siųskite keturis dalykus: tikslų URL, užklausos tipą, konsolės tekstą ir puslapį, kuriame jis pasirodo. Paslėpkite sesijos identifikatorius visame, ką įklijuojate į bilietą. Ataskaita, kuri tik sako, kad vaizdai sugadinti, savininkui nieko neduoda ieškoti.

Tunelis toliau daro savo darbą, kol pataisymas glūdi nuorodoje, kuri sukūrė užklausą. Po diegimo dar kartą paieškokite hosto vardo šablone ir tiekėjo pakete ir uždarykite bylą tik tada, kai konsolėje neliks nė vieno užblokuoto mišraus turinio įrašo.

Susiję straipsniai