Defaults.Exposed › Popravki › Zaščita pred clickjackingom (X-Frame-Options)
Kako popraviti Zaščita pred clickjackingom (X-Frame-Options)
Navodilo ene vrstice, ki brskalniku pove, da ne dovoli drugim spletnim stranem, da skrivoma naložijo vašo stran znotraj svojih. Brez tega lahko prevarant skrije vaše pravo, prijavlje stran za lažno stranjo in stranke zavede v klikanje stvari, ki jih niso nameravale — odobritev plačila, sprememba gesla, podelitev dostopa.
Bistvo za vaše podjetje: Prevarant je vaše pravo spletno mesto lahko nevidno ovije znotraj lažnega in strankam ukrade denar ali dostop do računa — in za stranko izgleda, kot da je to naredila vaša stran. Popravek je brezplačen in razvijalcu vzame okoli 15 minut; njegova odsotnost je znana vrzel, ki jo kriminalci in previdni kupci v sekundah opazijo.
Kaj vas to lahko stane
- Prevarant skrije vaš pravi prijavni ali plačilni zaslon za videti nenevno stranjo in stranko zavede v 'potrditev' prenosa ali spremembe nastavitve brez vednosti — stranka vas, ne napadalca, obtoži.
- Vaše prijavljeno področje računa se naloži nevidno na vrhu strani 'Zmagali ste — kliknite za zahtevek'; klik dejansko odobri pravo spremembo na računu stranke in vi obvladate jezni klic za podporo.
- IT ekipa potencialnega naročnika pred podpisom opravi hiter varnostni pregled in vidi, da je vašo stran mogoče vdelati kdorkoli in jo označi za tveganje, ki zaustavi ali ubije posel.
- Vaša blagovna znamka postane vaba v goljufivski kampanji; stranke, ki so ujete, se tega spomnijo kot 'podjetja, katerega stran je to dopustila'.
- Revizorska ali kibernetska zavarovalniška preiskava navede manjkajočo zaščito pred clickjackingom kot napako osnovne higiene — poceni za popraviti, sramotno, ker je bila označena.
Zakaj je to pomembno. To je brezplačna, enlinijska nastavitev, ki vzame minute za dodajanje in zapre cel razred trikov, usmerjenih na vaše prijavljene stranke. Pri našem točkovanju je vredno-resnih-točk preverjanje spletne varnosti z visoko resnostjo, ker manjkajoča glava pušča znano, enostavno preverljivo luknjo, ki jo kriminalci avtomatizirajo in kupci iščejo.
Kaj to je v preprostem jeziku
Ko nekdo obišče vašo spletno stran, je mogoče naložiti vašo stran znotraj druge spletne strani — kot majhno okno, vdelano znotraj večje strani. To zveni nenevno in včasih je. A to je mehanizem za napad, imenovan clickjacking.
Tukaj je trik. Prevarant zgradi svojo stran in tiho naloži vašo pravo spletno stran znotraj nje — nevidno, naredijo jo popolnoma prosojno. Nato na vrh postavljajo svojo vsebino: bleščeči gumb, “Predvajaj video”, “Zahtevaj nagrado”. Vaša stranka vidi napadalčevo stran in klikne tisto, kar izgleda kot nenevni gumb. Ker pa vaša prava stran tiho sedi nevidno pod njihovim kazalcem, klik dejansko pristane na vaši strani — potrdi plačilo, spremeni geslo, odobri dostop, sprejme dovoljenje. Stranka misli, da je kliknila eno stvar; dejansko je kliknila drugo, na strani, ki ji zaupa.
Zaščita pred clickjackingom je kratko, nevidno navodilo, ki ga vaša spletna stran pošlje brskalniku vsakega obiskovalca in ki v bistvu pravi:
“Ne dovoli drugim spletnim stranem, da me naložijo znotraj sebe. Če kdo poskusi, zavrni.”
Sodobni brskalniki to samodejno upoštevajo. Z njim vklopljenim trik preprosto ne deluje — vdelana kopija vaše strani zavrne nalaganje. Brez njega je vaša stran povsem na voljo za uporabo kot skrita plast v prevari in stranka, ki je ujeta, bo celotno zadevo povezala z vašo blagovno znamko, ne napadalčevo.
Kaj vas to lahko stane
To so realistični, vsakodnevni scenariji. Nikoli ne omenjamo resničnega podjetja; to so ilustracije načinov uporabe vrzeli.
-
Nevidna “potrditev”. Stranka je prijavljena v vaš portal računa v enem zavihku. Prispe na stran (iz oglasa, e-pošte, iskalnega rezultata), ki obljublja nekaj skušalnega in prikaže velik gumb “Nadaljuj”. Skrit pod tem gumbom je vaš pravi nadzor “Potrdi prenos” ali “Spremeni e-pošto”, naložen iz njihove lastne prijavljene seje. Kliknejo “Nadaljuj” — in nevede pooblastijo spremembo na svojem dejanskem računu pri vas.
-
Ugrabitev nastavitev. Napadalec uokviri vašo stran z nastavitvami računa in jo prekriva z nenevno igro ali anketo. Nekaj klikov na pravih mestih tiho preklopi nastavitev — doda napadalčevo e-pošto kot naslov za obnovitev, podeli dovoljenje aplikaciji ali onemogoči varnostno opozorilo. Račun je zdaj tiho ogrožen in takrat nič ni izgledalo narobe.
-
Zaustavljeni posel. Večji naročnik pošlje standardni varnostni vprašalnik pred podpisom. Ena vrstica vpraša, ali vaša stran nastavi zaščito pred uokvirjanjem (X-Frame-Options / CSP frame-ancestors). Vaš IT kontakt mora odgovoriti “ne” in nabava se zaustavi, medtem ko se trudite popraviti brezplačno, 15-minutno nastavitev, ki zdaj izgleda kot rdeča zastavica pred kupcem.
-
Kampanja z blagovno znamko kot vabo. Ker je vaše pravo, zaupanja vredno strani mogoče vdelati, napadalec uporabi vaš prijavni ali blagajniški zaslon kot prepričljivo plast v širši phishing kampanji. Stranke, ki so ujete, ne krivijo senčnega napadalca — se spomnijo časa, ko je “vaša stran” dopustila prevaro.
-
Oznaka revizije. Skeniranje zavarovalnice ali revizor, ki pregleduje vašo varnostno pozicijo, navede manjkajočo zaščito pred clickjackingom med ugotovitvami. Je učbeniška postavka osnovne higiene; njeno oznako signalizira, da lahki, brezplačni ukrepi zaščite niso bili na mestu.
Skupna nit: škoda pade na pravo, prijavljeno stranko, ki stori nekaj, česar ni nameravala — in nosi vaše ime, ne napadalčevo.
Kaj to dejansko je
Ko brskalnik zahteva stran od vaše spletne strani, vaš strežnik pošlje nazaj stran plus nekatere nevidne “glave” — dodatna navodila, ki jih brskalnik prebere, a obiskovalec nikoli ne vidi. Zaščita pred clickjackingom se dostavi prek teh glav. Sta dve in naše preverjanje prestane, če je katera koli prisotna:
1. Starejša glava — X-Frame-Options:
X-Frame-Options: SAMEORIGIN
To je dolgotrajna, splošno podprta kontrola. Sprejme eno od dveh praktičnih vrednosti:
SAMEORIGIN— vaša lastna stran sme vdelati lastne strani, a nobena zunanja stran ne sme. Varna privzeta vrednost za skoraj vse.DENY— nihče ne sme vdelati vaših strani, vključno z vami. Uporabite to le, če vaša stran nikoli ne uokviri lastne vsebine.
2. Sodobna glava — Content-Security-Policy frame-ancestors:
Content-Security-Policy: frame-ancestors 'self';
To je novejša, bolj prilagodljiva kontrola in tista, na katero kažejo sodobni standardi. Naredi enako delo, a vam omogoča natančnost glede kdo vas sme vdelati:
frame-ancestors 'self'— enakovrednoSAMEORIGIN.frame-ancestors 'none'— enakovrednoDENY.frame-ancestors 'self' https://partner.example.com— vaša lastna stran plus en poimenski, zaupanja vreden partner in nihče drug.
Kako izgleda “dobro”
Najmočnejša nastavitev uporablja oboje: frame-ancestors za sodobne brskalnike (in natančnost poimenskih dovoljenih vdelovalcev) in X-Frame-Options: SAMEORIGIN kot rezervo za starejše odjemalce. Naše preverjanje je zadovoljeno z eno samo — a ker sta obe brezplačni in vzameta enako malo minut, ni razloga, da ne bi nastavili obeh.
Ena pomembna podrobnost, ki jo mora vaš razvijalec vedeti: glava Content-Security-Policy-Report-Only ne uveljavlja ničesar — le poroča. Če hočete, da zaščita pred clickjackingom dejansko velja, mora priti iz uveljavljalne glave (normalni Content-Security-Policy s frame-ancestors ali X-Frame-Options), ne iz glave samo za poročanje.
Kako to popraviti (brezplačno, ~15 minut)
Posredujte ta razdelek tistemu, ki vodi vašo spletno stran — vaši IT osebi, spletnemu razvijalcu ali podpori gostovanja. Popravek je brezplačen. Sta ena ali dve odgovorni glavi ali pravilo v vašem CDN-u. Ničesar ni za kupiti.
Preverjanje prestane, ko je prisotna bodisi glava X-Frame-Options (nastavljena na DENY ali SAMEORIGIN) bodisi direktiva CSP frame-ancestors. Priporočena nastavitev doda oboje.
1. korak — Odločite se, kako strogo biti
- Večina podjetij:
SAMEORIGIN/frame-ancestors 'self'. Vaša lastna stran ostane delovna; zunanjim je blokirano. - Če vaša stran nikoli ne vdeluje lastnih strani:
DENY/frame-ancestors 'none'za maksimalno zaklepanje. - Če mora resnični partner vdelati konkretno stran: jih poimensko navedite z
frame-ancestors 'self' https://partner.example.com;in nihče drug ne pride noter.
2. korak — Dodajte glave (izberite svojo platformo)
Nginx — znotraj vašega bloka server:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Content-Security-Policy "frame-ancestors 'self';" always;
Apache — zagotovite, da je mod_headers omogočen, nato v virtualnem gostitelju:
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self';"
Microsoft IIS — v web.config znotraj <customHeaders>:
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Content-Security-Policy" value="frame-ancestors 'self';" />
Cloudflare (ali podoben CDN): pojdite na Pravila → Pravila preoblikovanja → Spremi glavo odziva in dodajte dve pravili, ki nastavita X-Frame-Options na SAMEORIGIN in Content-Security-Policy na frame-ancestors 'self'; pri vseh odzivih.
Že pošiljate Content-Security-Policy za druge namene? Ne ustvarite druge glave CSP — dodajte frame-ancestors v vašo obstoječo politiko. Dve glavi CSP si lahko protislovita.
Gradniki strani (Squarespace, Wix, Shopify in podobni): te platforme pogosto za vas nastavijo zaščito pred uokvirjanjem, tako da morda že prestandete brez da karkoli naredite. Nastavitev je navadno v varnostnih nastavitvah platforme ali jo dodate pri CDN-u pred stranjo.
3. korak — Znova naložite in preverite
Znova naložite spletni strežnik ali deploy pravilo CDN-a, nato naložite vašo živo stran in preverite odgovornih glav — Orodja za razvijalce brskalnika → Zavihek omrežja → kliknite zahtevo strani → Glave odziva. Potrdite, da se glave pojavljajo na resničnih odzivih strani, ne le na domači strani. Nato znova zaženite preverjanje.
Pogoste napake
- Uporaba CSP samo za poročanje in predpostavitev, da ščiti.
Content-Security-Policy-Report-Onlyle poroča o kršitvah — nič ne uveljavlja. Za zaščito, ki velja, potrebujete uveljavljalno glavo. - Nastavljanje dveh ločenih glav
Content-Security-Policy. Če že imate CSP, dodajteframe-ancestorsvanjo namesto oddajanja druge politike; navzkrižne glave CSP lahko povzročijo nepričakovano vedenje. - Nastavljanje
DENY, ko vaša lastna stran vdeluje lastne strani.DENYblokira vse uokvirjanje, vključno z vašim lastnim. Če katerikoli del vaše strani uporablja iframe lastne vsebine, namesto tega uporabiteSAMEORIGIN/frame-ancestors 'self'. - Zaščita le domače strani. Strani, ki so najbolj pomembne za clickjacking, so prijavljene — nastavitve računa, potrditev plačila, skrbnik. Prepričajte se, da so glave nameščene site-wide.
- Predpostavljanje, da HTTPS ali ključavnica to že pokriva. Šifriranje in zaščita pred uokvirjanjem sta nepovezani. Popoln certifikat ne naredi ničesar, da prepreči vdelanje vaših strani.
- Zanašanje na stare rešitve. “Prebijanje okvirjev” JavaScript (skripte, ki se skušajo prebiti iz okvirjev) je nezanesljivo in ga je mogoče zaobiti. Glave so pravilen, z brskalnikom uveljavljeni popravek.
Pogosta vprašanja
Nisem tehničen — ali se s tem ukvarjam sam?
Tehničnega dela vam ni treba narediti. Je ena nastavitev, dodana spletnem strežniku vaše strani ali vašemu CDN-u, in katerikoli spletni razvijalec ali IT ponudnik jo lahko doda v nekaj minutah. Posredujte jim razdelek 'Kako to popraviti' spodaj — natanko jim pove, kaj dodati. Popravek je brezplačen; zaračunamo le, če bi radi, da nadaljujemo s spremljanjem, da ostane nameščen.
Ali bo to ustavilo mojo lastno stran ali legitimne partnerje pri prikazovanju mojih strani?
Le, če ga nastavite prestrogo. Pogosta nastavitev ('SAMEORIGIN' ali 'frame-ancestors self') vaši lastni spletni strani še vedno dovoljuje normalno vdelanje lastnih strani — blokira le zunanje strani. Če resnični partner potrebuje vdelanje ene konkretne strani vaše, vaš razvijalec to enoznačno dovoli, medtem ko blokira vse ostale.
Smo majhno podjetje — ali bi nas kdo res ciljal?
Ti napadi so zagotovljeni v velikem obsegu z avtomatiziranimi orodji, ne izbirajo ročno. Manjše strani so pogosto zadete natanko, ker jim manjkajo takšne osnovne zaščite. Napadalec ne potrebuje vedeti, kdo ste — samo potrebuje, da je vaša stran vdelovljiva. Zapiranje vrzeli vam ne stane nič.
Kako 'dobro' dejansko izgleda?
Bodisi glava X-Frame-Options, nastavljena na SAMEORIGIN (ali DENY), ali politika varnosti vsebine z direktivo frame-ancestors — idealno oboje. Naše preverjanje prestane, če je katerakoli od njiju prisotna. Sodobni, bolj prilagodljivi nadzor je frame-ancestors; X-Frame-Options je starejša glava, ki še vedno pokriva nekatere starejše brskalnike, zato nastavitev obeh zagotavlja maksimalno pokritost.
Ali ni to isto kot SSL ključavnica ali HTTPS?
Ne — ščitita pred popolnoma različnimi stvarmi. HTTPS šifrira zvezo, da je nihče ne more prebrati med prenosom. Zaščita pred clickjackingom preprečuje nalaganje vaših strani znotraj strani nekoga drugega. Imate lahko popolno ključavnico in ste vseeno popolnoma izpostavljeni clickjackingu. To sta ločeni preverjanji in hočete oboje.
Če tega ne popravimo, ali to zniža naš oceno?
Da. To je ocenjevano preverjanje spletne varnosti, ne informativno — manjkajoča glava stane točke in je ocenjena z visoko resnostjo, ker neposredno izpostavi vaše prijavljene stranke goljufijam. Je prav tako ena od najcenejših točk za povrnitev: ena brezplačna glava, okoli 15 minut razvijalčevega časa.