Defaults.Exposed

Defaults.ExposedJavítások › Kattintás-eltérítés elleni védelem (X-Frame-Options)

Hogyan javítsd ki: Kattintás-eltérítés elleni védelem (X-Frame-Options)

Egyetlen soros utasítás, amely megmondja a böngészőknek, hogy ne engedjék meg más webhelyeknek a te oldalad titkos betöltését a sajátjukba. Enélkül egy csaló elrejtheti az élő, bejelentkezett oldalaidat egy hamis oldal mögé, és ráveheti az ügyfeleidet, hogy olyasmire kattintsanak, amit soha nem szándékoztak – jóváhagyva egy fizetést, megváltoztatva egy jelszót, hozzáférést adva.

Az üzleted szempontjából lényeg: Egy csaló láthatatlanul körbeburkolhatja az élő webhelyedet egy hamissal, és pénzt vagy fiókhoz való hozzáférést lophat a bejelentkezett ügyfeleidtől – és az ügyfél szemszögéből úgy tűnik, hogy a te oldalad csinálta. A javítás ingyenes, és egy fejlesztőnek kb. 15 percet vesz igénybe; az elhagyása egy ismert rés, amelyet a bűnözők és az óvatos vevők egyaránt másodpercek alatt észrevesznek.

Mibe kerülhet ez neked

Miért fontos. Ez egy ingyenes, egysoros beállítás, amelynek hozzáadása perceket vesz igénybe, és teljes egész taktikai becsapás osztályt zár le a bejelentkezett ügyfeleid ellen. A pontozásunkban ez egy valódi-pontokat érő webbiztonsági ellenőrzés, magas súlyossággal, mert egy hiányzó fejléc könnyen ellenőrizhető, ismert lyukat hagy, amelyet a bűnözők automatizálnak és a vevők keresnek.

Mi ez egyszerű szavakkal

Amikor valaki meglátogatja a weboldaladat, a böngészőjük azt is utasíthatja, hogy töltse be a weboldaladat egy másik webhelyen belül – mint egy kis ablak beágyazva egy nagyobb oldalba. Ez ártalmatlannak hangzik, és néha az is. De ez az a mechanizmus, amely mögött a kattintás-eltérítés (clickjacking) nevű támadás áll.

Íme a trükk. Egy csaló megépíti a saját oldalát, és csendesen betölti a valódi weboldaladat benne – láthatatlanul, teljesen átlátszóvá téve. Majd a saját tartalmát rakja felülre: egy mutatós gombot, egy ‘Videó lejátszása’ gombot, egy ‘Igényelje a díját’ feliratot. Az ügyfeled látja a támadó oldalát, és arra kattint, ami ártatlan gombnak tűnik. De mivel az igazi oldalad láthatatlanul ül a kurzor alatt, a kattintás valójában az oldaladra kerül – megerősíti egy fizetést, megváltoztat egy jelszót, jóváhagy egy hozzáférést, elfogad egy engedélyt. Az ügyfél azt hiszi, egy dologra kattintott; valójában másra kattintott, egy olyan oldalon, amelyben megbízik.

A kattintás-eltérítési védelem egy rövid, láthatatlan utasítás, amelyet a webhelyed minden látogató böngészőjének küld, amelynek lényege:

„Ne engedd más webhelyeknek, hogy betöltsenek a sajátjukba. Ha valaki megpróbálja, utasítsd el.”

A modern böngészők automatikusan engedelmeskednek. Amint be van kapcsolva, a trükk egyszerűen nem működik – az oldalad beágyazott másolata megtagadja a betöltést. Enélkül az oldalad szabad préda arra, hogy egy átverésben rejtett rétegként használják, és az ügyfél, aki belefut, az egészet a márkáddal fogja társítani, nem a támadóéval.

Mibe kerülhet ez neked

Ezek valós, mindennapi forgatókönyvek. Sosem nevesítünk valódi vállalkozást; ezek illusztrációi a rés kihasználásának.

  1. A láthatatlan ‘megerősítés’. Egy ügyfél be van jelentkezve a fiókportálodba az egyik fülön. Egy oldalra landolnak (egy hirdetésből, e-mailből, keresési eredményből), amely valami csábítót ígér, és egy nagy ‘Folytatás’ gombot mutat. E gomb alatt az igazi ‘Átutalás megerősítése’ vagy ‘E-mail módosítása’ vezérlő van rejtve, betöltve a saját bejelentkezett munkamenetükből. A ‘Folytatás’-ra kattintanak – és véletlenül felhatalmaznak egy valódi változtatást a tényleges fiókjukon nálad. Nekik és az ügyfélszolgálati csapatodnak úgy tűnik, mintha ők csinálták az oldaladon.

  2. A beállítás-elrablás. Egy támadó bekeretezel a fiókbeállítási oldalad, és egy ártatlan játékot vagy felmérést ültet rá. Néhány kattintás a megfelelő helyeken csendben megváltoztat egy beállítást – hozzáadja a támadó e-mailcímét helyreállítási címként, engedélyt ad egy alkalmazásnak, vagy letilt egy biztonsági riasztást. A fiók mostantól csendben kompromittált, és semmi sem tűnt rossznak annak idején.

  3. Az elakadt üzlet. Egy nagyobb ügyfél az aláírás előtt elküldi a szokásos biztonsági kérdőívet. Az egyik sor megkérdezi, hogy a webhely beállít-e kattintás-eltérítés elleni védelmet (X-Frame-Options / CSP frame-ancestors). Az IT-kapcsolatodnak ‘nem’ választ kell adnia, és a beszerzési folyamat megáll, amíg rohanva javítasz egy ingyenes, 15 perces beállítást.

  4. A márkánk mint csali kampány. Mivel az igazi, megbízott oldalaid beágyazhatók, egy támadó az igazi bejelentkezési vagy pénztáradat használja meggyőző rétegként egy szélesebb adathalász kampányban. Az odavonzott ügyfelek nem a homályos támadót hibáztatják – emlékezni fognak rá, mint arra az alkalomra, amikor ‘az oldalad’ beengedte, hogy átejtsék őket.

  5. Az audit megjelölése. Egy biztosítói vizsgálat, vagy egy auditor a biztonsági helyzetről, a hiányzó kattintás-eltérítési védelmet megállapítások között sorolja fel. Tipikus alapvető higiéniai tétel; ott szerepelni jelzi, hogy az egyszerű, ingyenes védelmi megoldások nem voltak érvényes – ami befolyásolja, hogyan ítélik meg a többi biztonsági megoldásodat.

Az összefüggő szál: a kár egy valódi, bejelentkezett ügyfélre hull, aki valami olyasmit tesz, amit nem szándékoztak – és a te nevedet viseli, nem a támadóét.

Mi is ez pontosan

Amikor egy böngésző oldalt kér a webhelyedtől, a szervered visszaküldi az oldalt néhány láthatatlan ‘fejléccel’. A kattintás-eltérítési védelem ezeken a fejléceken keresztül kerül kézbesítésre. Két lehetőség van, és az ellenőrzésünk megfelel, ha bármelyik jelen van:

1. A régebbi fejléc – X-Frame-Options:

X-Frame-Options: SAMEORIGIN

Ez a hosszú ideje fennálló, széles körben támogatott vezérlő. Két praktikus értéket vesz fel:

2. A modern fejléc – Content-Security-Policy frame-ancestors:

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

Ez az újabb, rugalmasabb vezérlő, amelyre a jelenlegi szabványok mutatnak. Ugyanazt a munkát végzi, de lehetővé teszi, hogy pontosan meghatározd, ki ágyazhatja be:

Mit jelent a „jó” beállítás

A legerősebb beállítás mindkettőt használja: a frame-ancestors-t a modern böngészőkhöz, és az X-Frame-Options: SAMEORIGIN-t tartalékként a régebbi ügyfelek számára. Az ellenőrzésünk megelégszik bármelyikkel önmagában – de mivel mindkettő ingyenes, és ugyanolyan néhány percbe kerül, nincs ok arra, hogy ne állítsuk be mindkettőt.

Egy fontos részlet, amelyet a fejlesztődnek tudnia kell: egy Content-Security-Policy-Report-Only fejléc nem kényszerít semmit – csak jelentést tesz. Ha azt akarod, hogy a kattintás-eltérítési védelem ténylegesen érvényes legyen, egy kényszerítő fejlécből kell érkeznie (normál Content-Security-Policy frame-ancestors-szel, vagy X-Frame-Options), nem egy report-only-ból.

Hogyan javítsd ki (ingyenes, ~15 perc)

Add ezt a részt annak, aki a weboldaladat kezeli – az IT-személyednek, webfejlesztőnek vagy tárhely ügyfélszolgálatnak. A javítás ingyenes. Egy-két válasz fejléc, vagy egy szabály a CDN-edben. Nincs mit venni.

Az ellenőrzés megfelel, ha vagy egy X-Frame-Options fejléc (DENY vagy SAMEORIGIN értékkel) vagy egy CSP frame-ancestors direktíva jelen van. Az ajánlott kötőfék-és-gombpánt beállítás mindkettőt hozzáadja.

1. lépés – Döntsd el, mennyire szigorú leszel

2. lépés – Add hozzá a fejléceket (válaszd ki a platformot)

Nginx – a server blokkon belül:

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

Apache – ügyelj arra, hogy a mod_headers engedélyezve van, majd a virtuális hosztban:

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

Microsoft IIS – a web.config-ban az <customHeaders> belül:

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

Cloudflare (vagy hasonló CDN): menj a Rules → Transform Rules → Modify Response Header részbe, és adj hozzá két szabályt, amelyek az X-Frame-Options-t SAMEORIGIN-ra és a Content-Security-Policy-t frame-ancestors 'self';-re állítják az összes választ. Ez a legkönnyebb út, ha nincs közvetlen szerverhozzáférésed.

Már küldesz Content-Security-Policy-t más okokból? Ne hozz létre egy második CSP fejlécet – add a frame-ancestors-t a meglévő politikádhoz. Két CSP fejléc ütközhet.

Weboldal-builderek (Squarespace, Wix, Shopify és hasonlók): ezek a platformok sokszor beállítják a kattintás-eltérítési védelmet neked, tehát lehet, hogy már megfelelsz anélkül, hogy bármit kellene tenned. Ha az ellenőrzésünk megjelöli, a vezérlő általában a platform biztonsági beállításaiban van, vagy hozzáadod az oldal előtt lévő CDN-nél.

3. lépés – Töltsd újra és ellenőrizd

Töltsd újra a webszervert vagy helyezd üzembe a CDN szabályt, majd töltsd be az élő oldaladat, és ellenőrizd a válasz fejléceket – böngésző fejlesztői eszközök → Hálózat fül → kattints az oldalkérésre → Válasz fejlécek, vagy bármely ingyenes fejléc-ellenőrző eszköz. Erősítsd meg, hogy a fejléc(ek) valódi oldal-válaszokon jelennek meg, nem csak a kezdőoldalon. Majd futtasd újra az ellenőrzést.

Általános hibák

GYIK

Nem vagyok technikai beállítottságú – meg tudom magam oldani ezt?

Nem kell elvégezned a technikai részt. Egyetlen beállítás, amelyet a webszerver vagy a CDN-ed ad hozzá, és bármely webfejlesztő vagy IT-szolgáltató néhány perc alatt hozzáadhatja. Add át nekik az alábbi 'Hogyan javítsd ki' részt – megmondja pontosan, mit kell hozzáadni. A javítás ingyenes; mi csak akkor számítunk fel díjat, ha azt szeretnéd, hogy folyamatosan figyeljük, hogy érvényes marad-e.

Ez tönkreteheti-e a saját oldalamat, vagy a legitim partnerek az oldalaim megjelenítésétől?

Csak ha túl szigorúan állítod be. A közös beállítás ('SAMEORIGIN', vagy 'frame-ancestors self') még mindig lehetővé teszi a saját webhelyednek, hogy normálisan beágyazza a saját oldalait – csak a külső webhelyeket blokkolja. Ha egy valódi partner az egyik adott oldaladat kell, hogy beágyazza, a fejlesztőd engedélyezheti azt az egyet, miközben mindenki mást blokkol.

Kis vállalkozás vagyunk – tényleg bajlódna valaki azzal, hogy minket célba vegyen?

Ezeket a támadásokat tömeges, automatizált eszközökkel futtatják, nem kézzel kiválasztva. A kisebb oldalakat sokszor pontosan azért érik el, mert hiányoznak belőlük az ilyen alapvető védelmi megoldások. A támadónak nem kell tudnia, ki vagy – csak azt kell, hogy az oldalad beágyazható legyen. A rés bezárása semmibe sem kerül neked.

Mi minősül 'jónak' valójában?

Vagy egy X-Frame-Options fejléc SAMEORIGIN-re (vagy DENY-ra) állítva, vagy egy Content-Security-Policy frame-ancestors direktívával – ideálisan mindkettő. Az ellenőrzésünk megfelel, ha bármelyik jelen van. A modern, rugalmasabb vezérlő a frame-ancestors; az X-Frame-Options a régebbi fejléc, amely még mindig lefedte egyes régi böngészőket, tehát a kötőfék-és-gombpánt beállítás mindkettőt használja.

Ez ugyanolyan, mint az SSL lakat vagy a HTTPS?

Nem – egészen különböző dolgok ellen védenek. A HTTPS titkosítja a kapcsolatot, hogy senki ne olvashassa átvitel közben. A kattintás-eltérítési védelem megakadályozza, hogy az oldalaidat valaki más oldalán belül töltsék be egyáltalán. Tökéletes lakatod lehet, és mégis teljesen nyitva állhatsz a kattintás-eltérítésre. Ezek külön ellenőrzések, és mindkettőt akarod.

Ha nem javítjuk, csökkenti-e a besorolásunkat?

Igen. Ez egy pontozásos webbiztonsági ellenőrzés, nem tájékoztató – egy hiányzó fejléc pontokat kerül, és magas súlyosságúnak minősül, mert közvetlenül teszi ki a bejelentkezett ügyfeleidet a csalásnak. Ez az egyik legolcsóbban visszaszerezhető pont: egyetlen ingyenes fejléc, kb. 15 perces fejlesztői munka.