Cryptology Academy · Lektion

HTTP-nedgradering og risici ved mixed content

Forstå, hvordan angribere udnytter HTTP-fallback, og hvorfor mixed content ødelægger sikkerhedsgarantier.

Lektion 4 af 413 trin

HTTP-nedgradering og risici ved mixed content er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

HTTP Strict Transport Security

HTTP Strict Transport Security (HSTS)-headeren instruerer browsere i kun at oprette forbindelse til et websted via HTTPS i en angivet periode. Når browseren har modtaget headeren, afviser den HTTP-forbindelser og opgraderer automatisk URL'er fra http:// til https://.

En typisk HSTS-header er: "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload". max-age er angivet i sekunder (31536000 = 1 år). Når den er gemt i cachen, håndhæver browseren HTTPS i ét år uden involvering fra nogen server.

HSTS max-age og includeSubDomains

Parameteren max-age angiver, hvor længe browseren skal håndhæve forbindelser, der kun bruger HTTPS, i sekunder. På produktionswebsteder anbefales værdier på mindst ét år (31536000).

Direktivet includeSubDomains udvider HSTS-håndhævelsen til alle underdomæner. Det forhindrer angreb, hvor en angriber nedgraderer en underdomæneforbindelse til HTTP og bruger den til at stjæle cookies, der er angivet uden Secure-flaget på hoveddomænet.

HSTS-preload-listen

Browsere leveres med en hårdkodet liste over domæner, der altid kun bruger HTTPS, også ved det allerførste besøg. Listen vedligeholdes på hstspreload.org og omfatter tusindvis af større websteder.

Preloading fjerner sårbarheden ved det første besøg: Uden preloading kunne en førstegangsbesøgende blive aflyttet, før HSTS-headeren blev modtaget. Websteder på preload-listen bruger kun HTTPS fra den allerførste anmodning, uanset HSTS-cachetilstanden.

Angreb med SSL-stripping

SSL-stripping, som blev offentliggjort af Moxie Marlinspike på Black Hat i 2009, er et MITM-angreb, der nedgraderer HTTPS-forbindelser til HTTP. Angriberen opfanger brugerens første HTTP-anmodning, sender HTTPS-anmodninger til den rigtige server på brugerens vegne og videresender indholdet til brugeren over HTTP.

Offeret ser indholdet som normalt, men over HTTP. Alle legitimationsoplysninger, der indtastes, sendes til angriberen. Før HSTS var dette angreb meget effektivt, fordi brugerne ikke lagde mærke til den manglende hængelås.

HSTS stopper SSL-stripping

HSTS stopper SSL-stripping, fordi browseren nægter at fortsætte med HTTP-forbindelser til domæner, der er tilmeldt HSTS. Selv hvis en angriber forsøger at levere en side over HTTP, nægter browseren ganske enkelt at oprette forbindelse og viser en fejl.

Browserens HSTS-håndhævelse sker, før nogen netværksanmodning sendes, så angriberen kan ikke blande sig. Den eneste resterende sårbarhed er det første besøg, før HSTS er modtaget, og den fjernes med preloading.

Aktivt og passivt blandet indhold

Blandet indhold opstår, når en HTTPS-side indlæser ressourcer over HTTP. Passivt blandet indhold omfatter billeder, lyd og video, der indlæses over HTTP. Det kan ikke ændre siden direkte, men kan afsløre brugeroplysninger via HTTP-headere og muliggøre sporing.

Aktivt blandet indhold omfatter scripts, typografiark, iframes og XMLHttpRequests, der indlæses over HTTP. Et HTTP-script kan kompromittere HTTPS-sidens sikkerhed fuldstændigt, fordi det har fuld adgang til DOM'en og kan læse cookies og formulardata.

Browseres blokering af scripts med blandet indhold

Moderne browsere blokerer som standard aktivt blandet indhold (scripts, typografiark og iframes over HTTP), når den omsluttende side bruger HTTPS. Der vises en fejl i konsollen, og ressourcen indlæses ikke.

Fra og med Chrome 81 (2020) begyndte browsere automatisk at opgradere passivt blandet indhold til HTTPS. Hvis HTTPS-versionen findes, indlæses den. Hvis ikke, blokeres ressourcen.

Blandet indhold i browserens udviklerværktøjer

Browserens udviklerkonsol viser advarsler og fejl om blandet indhold. I Chrome skal du åbne DevTools, gå til fanen Console og filtrere efter "Blandet indhold". For hver blokeret ressource vises den usikre URL, der skal opdateres.

Sikkerhedspanelet i DevTools viser et omfattende sikkerhedsoverblik: certifikatoplysninger, forbindelsesoplysninger og en liste over alle usikre ressourcer på siden.

CSP-direktivet upgrade-insecure-requests

Content Security Policy (CSP)-direktivet "upgrade-insecure-requests" instruerer browsere i automatisk at opgradere alle HTTP-anmodninger fra siden til HTTPS. Det håndterer ældre indhold med hårdkodede HTTP-URL'er.

I modsætning til blokering af blandet indhold forsøger upgrade-insecure-requests først at hente HTTPS-versionen. Det er nyttigt under overgangen fra HTTP til HTTPS, når det ville være upraktisk at opdatere alle indlejrede URL'er i ældre indhold.

Annonceindsprøjtning fra internetudbydere på HTTP

Uden HTTPS kan internetudbydere (ISP'er) indsætte indhold i HTTP-svar. Flere internetudbydere er blevet taget i at indsætte reklamer på websteder, der ikke havde reklamer, tilføje sporingspixels eller indsætte advarselssider, når brugerne nærmer sig deres datagrænse.

Denne form for indholdsindsprøjtning er umulig på HTTPS-sider, fordi svaret er godkendt og krypteret. Enhver ændring ville få TLS-MAC-verifikationen til at mislykkes, hvilket ville resultere i en forbindelsesfejl i stedet for at levere ændret indhold.

Hvorfor det første HTTP-besøg stadig er risikabelt

Før en browser har set en HSTS-header for et domæne, er det allerførste besøg over HTTP sårbart. En angriber kan opfange denne første anmodning og udføre SSL-stripping uden at udløse browseradvarsler.

Denne sårbarhed ved "tillid ved første brug" er årsagen til, at HSTS-preload-listen findes. Hvis et websted indsendes til preload-listen, håndhæver browsere HTTPS for domænet fra den allerførste anmodning, så vinduet ved det første besøg lukkes helt.

HSTS-quiz

Test din forståelse af HTTP Strict Transport Security.

Vigtigste pointer: HSTS og blandet indhold

HSTS instruerer browsere i at håndhæve forbindelser, der kun bruger HTTPS, for et domæne i en angivet periode. Preload-listen udvider beskyttelsen til de allerførste besøg ved at indbygge HSTS-politikker i browsere.

SSL-stripping (Moxie Marlinspike, 2009) nedgraderer HTTPS til HTTP, men HSTS stopper det. Aktivt blandet indhold (HTTP-scripts på HTTPS-sider) blokeres af browsere. CSP-direktivet upgrade-insecure-requests automatiserer overgangen fra HTTP til HTTPS for ældre indhold.

Gratis at komme i gang

Lær Cryptology Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “HTTP-nedgradering og risici ved mixed content” gratis?

Ja — hele teksten til “HTTP-nedgradering og risici ved mixed content” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “HTTP-nedgradering og risici ved mixed content”?

Forstå, hvordan angribere udnytter HTTP-fallback, og hvorfor mixed content ødelægger sikkerhedsgarantier. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “HTTP-nedgradering og risici ved mixed content”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?

Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hængelåsikonet: Hvad det virkelig betyder
  2. Sådan får websites SSL-certifikater
  3. TLS-certifikatadvarsler, og hvad De skal gøre
  4. HTTP-nedgradering og risici ved mixed content
← Tilbage til Cryptology Academy