Defaults.Exposed

Defaults.ExposedRettelser › Clickjacking-beskyttelse (X-Frame-Options)

Sådan retter du Clickjacking-beskyttelse (X-Frame-Options)

En ét-linjes instruktion der siger til browsere, at andre hjemmesider ikke hemmeligt må indlæse din side inde i deres egne. Uden den kan en svindler skjule dine rigtige, indloggede sider bag en falsk side og narre dine kunder til at klikke på ting, de aldrig mente at klikke på — godkende en betaling, ændre en adgangskode, give adgang.

Det korte svar for din virksomhed: En svindler kan usynligt pakke din live-hjemmeside ind i en falsk og stjæle penge eller kontoadgang fra dine indloggede kunder — og for kunden ser det ud som om din side gjorde det. Fikset er gratis og tager en udvikler cirka 15 minutter; at lade det stå ude er et kendt hul, som både kriminelle og påpasselige købere kan spotte på sekunder.

Hvad dette kan koste dig

Hvorfor det betyder noget. Dette er en gratis, ét-linjes indstilling der tager minutter at tilføje, og den lukker en hel klasse af snyd rettet mod dine indloggede kunder. På vores scoring er det et reelle-point-websikkerhedscheck rated høj alvorlighed, fordi et manglende header efterlader et kendt, nemt-tjekket hul, som kriminelle automatiserer og købere kigger efter.

Hvad dette er på klart dansk

Når nogen besøger din hjemmeside, kan deres browser også beordres til at indlæse din side inde i en anden hjemmeside — som et lille vindue integreret inde i en større side. Det lyder harmløst, og nogle gange er det det. Men det er mekanismen bag et angreb kaldet clickjacking.

Her er tricket. En svindler bygger sin egen side og indlæser stille din rigtige hjemmeside inde i den — usynlig, gjort fuldstændig gennemsigtig. Derefter lægger de sit eget indhold ovenpå: en flashy knap, en “Se video”, et “Kræv din præmie.” Din kunde ser angriberens side og klikker på, hvad der ligner en harmløs knap. Men fordi din rigtige side sidder usynligt under sin markør, lander klikket faktisk på din side — bekræfter en betaling, ændrer en adgangskode, godkender adgang, accepterer en tilladelse. Kunden tror, de klikkede én ting; de klikkede faktisk en anden, på en side de stoler på.

Clickjacking-beskyttelse er en kort, usynlig instruktion din hjemmeside sender til enhver besøgendes browser der i bund og grund siger:

“Lad ikke andre hjemmesider indlæse mig inde i dem. Forsøger nogen, nægt.”

Hvad dette kan koste dig

  1. Den usynlige “bekræft.” En kunde er indlogget på dit kontoportal i én fane. De lander på en side (fra en annonce, en e-mail, et søgeresultat) der lover noget fristende og viser en stor “Fortsæt”-knap. Skjult under den knap er din rigtige “Bekræft overførsel” eller “Skift e-mail”-kontrol, indlæst fra deres eget indloggede session. De klikker “Fortsæt” — og godkender uvidende en ændring på deres faktiske konto hos dig.

  2. Indstillingskapringstoget. En angriber integrerer din kontosindstillingsside og lægger et uskyldigt spil eller en undersøgelse ovenpå. Et par klik på de rigtige steder sætter stille en indstilling — tilføjer angriberens e-mail som en gendannelsesadresse, giver en app tilladelse eller deaktiverer en sikkerhedsadvarsel.

  3. Aftalen der staller. En større kunde sender sit standard-sikkerhedsspørgeskema inden underskrift. En linje spørger, om din side sætter anti-framing-beskyttelse (X-Frame-Options / CSP frame-ancestors). Din IT-kontakt er nødt til at svare “nej.”

  4. Brand-som-lokkemad-kampagnen. Fordi dine rigtige, betroede sider kan integreres, bruger en angriber dit login eller din checkout som det overbevisende lag i en bredere phishing-kampagne.

  5. Revisionsflaget. En forsikrers scanning, eller en revisor, lister manglende clickjacking-beskyttelse blandt fundene.

Hvad det faktisk er

Clickjacking-beskyttelse leveres via svar-headers. Der er to, og vores tjek består, hvis nogen er til stede:

1. Det ældre header — X-Frame-Options:

X-Frame-Options: SAMEORIGIN

Det tager en af to praktiske værdier:

2. Det moderne header — Content-Security-Policy frame-ancestors:

Content-Security-Policy: frame-ancestors 'self';

Dette er den nyere, mere fleksible kontrol:

Hvad “godt” ser ud som

Den stærkeste opsætning bruger begge: frame-ancestors for moderne browsere og X-Frame-Options: SAMEORIGIN som fallback for ældre klienter. Vores tjek er tilfreds med en af dem alene.

Én vigtig detalje: et Content-Security-Policy-Report-Only-header håndhæver ikke noget — det rapporterer kun.

Sådan fikser du det (gratis, ~15 minutter)

Overrækk dette afsnit til den der kører din hjemmeside — din IT-person, webudvikler eller hostingsupport. Fikset er gratis.

Trin 1 — Beslut, hvor strengt du vil være

Trin 2 — Tilføj headers (vælg din platform)

Nginx — inde i din server-blok:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header Content-Security-Policy "frame-ancestors 'self';" always;

Apache — sørg for at mod_headers er aktiveret:

Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self';"

Microsoft IIS — i web.config inde i <customHeaders>:

<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Content-Security-Policy" value="frame-ancestors 'self';" />

Cloudflare (eller lignende CDN): gå til Rules → Transform Rules → Modify Response Header, og tilføj to regler.

Sender du allerede en Content-Security-Policy af andre årsager? Opret ikke et andet CSP-header — tilføj frame-ancestors til din eksisterende politik.

Trin 3 — Genindlæs og verificér

Genindlæs webserveren eller deployér CDN-reglen, indlæs derefter din live side og tjek svar-headers — browser-devtools → Network-fanen → klik på sideforespørgslen → Svar-headers.

Almindelige fejl

FAQ

Jeg er ikke teknisk — kan jeg selv klare det?

Du behøver ikke gøre den tekniske del. Det er en enkelt indstilling tilføjet til din hjemmesides server eller dit CDN, og enhver webudvikler eller IT-udbyder kan tilføje det på få minutter. Send dem afsnittet 'Sådan fikser du det' nedenfor — det siger dem præcis, hvad de skal tilføje. Fikset er gratis; vi opkræver kun betaling, hvis du ønsker, at vi løbende overvåger, at det forbliver på plads.

Vil dette stoppe min egen side, eller legitime partnere, fra at vise mine sider?

Kun hvis du sætter det for strengt. Den gængse indstilling ('SAMEORIGIN', eller 'frame-ancestors self') lader stadig din egen hjemmeside integrere sine egne sider normalt — den blokerer kun udefrakommende sider. Har en ægte partner brug for at integrere én specifik side af din, kan din udvikler tillade den enkelt kilde, mens alle andre stadig blokeres.

Vi er en lille virksomhed — ville nogen virkelig gøre sig umage for at angribe os?

Disse angreb køres i bulk af automatiserede værktøjer, ikke håndplukket. Mindre sider rammes ofte præcis fordi de mangler grundlæggende beskyttelse som denne. Angriberen behøver ikke vide, hvem du er — de har blot brug for, at din side kan integreres. At lukke hullet koster dig ingenting.

Hvad ser 'godt' faktisk ud som?

Enten et X-Frame-Options-header sat til SAMEORIGIN (eller DENY), eller en Content-Security-Policy med et frame-ancestors-direktiv — ideelt begge. Vores tjek består, hvis nogen af dem er til stede. Den moderne, mere fleksible kontrol er frame-ancestors; X-Frame-Options er det ældre header der stadig dækker nogle legacy-browsere, så den bedste opsætning bruger begge.

Er dette ikke det samme som SSL-låsen eller HTTPS?

Nej — de beskytter mod fuldstændig forskellige ting. HTTPS krypterer forbindelsen, så ingen kan læse den undervejs. Clickjacking-beskyttelse stopper dine sider i at blive indlæst inde i nogen andens side overhovedet. Du kan have en perfekt lås og stadig være åben for clickjacking.

Sænker det vores karakter, hvis vi ikke fikser det?

Ja. Dette er et scoret websikkerhedscheck, ikke informativt — et manglende header koster point og er rated høj alvorlighed, fordi det direkte eksponerer dine indloggede kunder for svindel. Det er også et af de billigste point at hente tilbage: et enkelt gratis header, cirka 15 minutters udviklertid.