Content Marketing

Iframe feltörés: Hogyan állítsuk le a tartalmainak jogosulatlan iframe-ezését

A webhelyem egyik látogatója egyszer értesített, amikor rákattintott az egyik linkemre Twitter; egy nagy felugró ablakkal és egy rosszindulatú kódra figyelmeztető üzenettel került az oldalamra. Ez elég ahhoz, hogy valakit a fenébe ijesztsek, ezért elkezdtem tesztelni. Nem volt semmi baj az oldalammal – a probléma a link volt.

A másik webhelyen található hivatkozás egy eszköztárat hozott létre a tetején, amely arra ösztönözte az embereket, hogy egy rosszindulatú hivatkozásra kattintsanak, miközben betöltik a webhelyemet az alatta lévő iframe-be. A legtöbb ember számára úgy tűnhet, hogy a webhelyem rosszindulatú kódot terjeszt. Nem mondanám, hogy szeretek olyan webhelyeket, amelyek egy iframe-en belül töltik be a webhelyemet, ezért azt tettem, amit minden ésszerű stréber tenne… Feltöltöttem egy keretmegszakítót.

A webhely iframe-be állítása azonban nem mindig rosszindulatú. Nemrég megosztottunk egy eszközt, Sniply, cselekvésre ösztönzés hozzáadásához (CTA) bármely megosztott webhelylinkre. Ezt úgy éri el, hogy a teljes webhelyet beágyazza egy iframe-be, és a cselekvésre ösztönzéssel divet alkalmaz a tartalomra.

De nagyon különös vagyok a tartalmam és az általam tett erőfeszítések tekintetében Martech Zone, így nem szeretném, ha bárki iframe-elné a tartalmamat, még link-share platformmal sem. Némi kutatás során jó néhány módszer létezik ennek kezelésére.

Hogyan állítsuk le a tartalom iframezését JavaScripttel

Ez a JavaScript kód ellenőrzi, hogy az aktuális ablak (self) nem a legfelső ablak (top). Ha nem, ez azt jelenti, hogy az oldal keretben, iframe-ben vagy hasonlóban van, és a szkript átirányítja a legfelső ablakot a URL az aktuális ablakból. Ezt hatékonyan kitör az iframe-ből.

<script type='text/javascript'>
if (top !== self) top.location.href = self.location.href;
</script>

Ennek a megközelítésnek számos hátránya van:

  1. JavaScriptre támaszkodás: Ha a felhasználónál le van tiltva a JavaScript, ez a módszer nem fog működni.
  2. késések: Előfordulhat egy kis késés a JavaScript végrehajtása előtt, amely alatt webhelyének keretes verziója továbbra is látható lehet.
  3. Cross-eredet korlátozások: Egyes helyzetekben ugyanaz a származási szabályzat megakadályozhatja, hogy ez a szkript a kívánt módon működjön. Ha a szülődokumentum egy másik tartományban található, előfordulhat, hogy nem tud hozzáférni top.location.href.
  4. Lehetőség a keret-elszakadásra: Vannak olyan szkriptek is (úgynevezett frame-busting-busters), amelyek megakadályozhatják a frame-busting szkriptek működését.

A jobb megközelítés a HTTP válaszfejlécek használata.

X-Frame-Options és Content-Security-Policy

Mindkét X-Frame-Options és a Content-Security-Policy (CSP) HTTP-válaszfejlécek, amelyek a webhelyek biztonságának fokozására szolgálnak. Mindegyikük kissé eltérő célokat szolgál, és eltérő szintű rugalmassággal rendelkeznek.

X-Frame-Options egy régebbi HTTP-fejléc, amelyet kifejezetten arra terveztek, hogy szabályozza, hogy webhelye beágyazható-e a <frame>, <iframe>, <embed>vagy <object> egy másik oldalon. Három lehetséges irányelve van:

  1. DENY – Az oldal nem jeleníthető meg keretben, függetlenül attól, hogy az oldal megpróbálja ezt megtenni.
  2. SAMEORIGIN – Az oldal csak olyan keretben jeleníthető meg, amely ugyanazon az eredeten van, mint maga az oldal.
  3. ALLOW-FROM uri – Az oldal csak keretben jeleníthető meg a megadott eredeten.

Azonban, X-Frame-Options korlátozott abban az értelemben, hogy nem tud bonyolultabb forgatókönyveket kezelni, például több különböző forrásból származó keretezés engedélyezését vagy helyettesítő karakterek használatát az aldomaineknél. Nem minden böngésző támogatja a ALLOW-FROM Irányelv.

Content-Security-Policy, másrészt egy sokkal rugalmasabb és erősebb HTTP-fejléc. Miközben mindenre képes X-Frame-Options és még sok minden mást is megtehet, elsődleges célja a kódbefecskendezési támadások széles körének megakadályozása, beleértve a webhelyek közötti parancsfájlokat (XSS) és a clickjacking. Úgy működik, hogy megadja a megbízható tartalomforrások (szkriptek, stílusok, képek stb.) engedélyezési listáját.

A keretek vezérléséhez a CSP a frame-ancestors irányelv. Több forrást is megadhat, köztük több tartományt és helyettesítő karakteres aldomaint. Íme egy példa:

cssCopy codeContent-Security-Policy: frame-ancestors 'self' yourdomain.com *.domain2.com;

Ez lehetővé tenné, hogy az oldal a saját webhelyén kerüljön keretbe ('self'), tovább yourdomain.com, és a domain bármely aldomainjén domain2.com.

A CSP helyett javasolt X-Frame-Options, hiszen mindent elbír X-Frame-Options megteheti, és még sok más. Bár a legtöbb modern böngésző támogatja a CSP-t, előfordulhat, hogy még mindig vannak régi vagy kevésbé elterjedt böngészők, amelyek nem támogatják teljes mértékben.

Hogyan állítsuk le a tartalom iframezését HTML-lel

Mostantól van egy Content-Security-Policy metacímke, amely telepíthető, és letiltja a tartalom iframe-elésének lehetőségét:

<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self' yourdomain.com">

A HTML metacímke hatékonysága korlátozott, mert nem minden böngésző tartja tiszteletben a Content-Security-Policy metatag használatával beállítva.

Hogyan állítsuk le a tartalom iframezését HTTP-fejlécekkel

Jobb a HTTP fejlécek használata X-Frame-Options or Content-Security-Policy a keretezés szabályozására. Ezek a beállítások megbízhatóbbak és biztonságosabbak, és akkor is működnek, ha a JavaScript le van tiltva. A JavaScript-módszert csak végső megoldásként szabad használni, ha nem rendelkezik a kiszolgáló felett a HTTP-fejlécek beállításával. Mindegyik példánál cserélje ki yourdomain.com a tényleges domainnel.

Apache – Módosítsa a sajátját .htaccess fájl az alábbiak szerint:

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

nginx – Módosítsa a szerverblokkot az alábbiak szerint:

add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' yourdomain.com";

IIS – ezt úgy teheti meg, hogy hozzáadja a következőt a sajátjához web.config file:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="frame-ancestors 'self' yourdomain.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

WordPress – ehhez adja hozzá ezt a kódot a functions.php fájlhoz:

function add_security_headers() {
  header('X-Frame-Options: SAMEORIGIN');
  header("Content-Security-Policy: frame-ancestors 'self' yourdomain.com");
}
add_action('send_headers', 'add_security_headers');

Ezek a konfigurációk csak az Ön által megadott pontos domain iframe keretébe ágyazzák be az oldalt, nem pedig a domain aldomainjeibe. Ha engedélyezni szeretne bizonyos aldomaineket, kifejezetten fel kell sorolnia azokat, például subdomain1.yourdomain.com subdomain2.yourdomain.com, És így tovább.

Engedélyezze a tartalom iframe-be helyezését több domainről

Több tartományt is megadhat a Content-Security-Policy HTTP válaszfejléccel és a frame-ancestors direktívával. Minden tartományt szóközzel kell elválasztani. Íme egy példa:

Content-Security-Policy: frame-ancestors 'self' domain1.com domain2.com domain3.com;

Apache – Módosítsa a sajátját .htaccess fájl az alábbiak szerint:

Header always set X-Frame-Options SAMEORIGINHeader always set Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com"

nginx – Módosítsa a szerverblokkot az alábbiak szerint:

add_header X-Frame-Options SAMEORIGIN;add_header Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com";

IIS – ezt úgy teheti meg, hogy hozzáadja a következőt a sajátjához web.config file:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
      <add name="Content-Security-Policy" value="frame-ancestors 'self' domain1.com domain2.com domain3.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Engedélyezze a tartalom iframezését helyettesítő karakteres domainről

Az összes aldomainhez helyettesítő karaktert is megadhat a Content-Security-Policy HTTP válaszfejléc és a keret-elődök direktíva. Íme példák a Content-Security-Policy frissítésre szoruló kód:

Content-Security-Policy: frame-ancestors 'self' *.yourdomain.com;

Apache – Módosítsa a sajátját .htaccess fájl az alábbiak szerint:

Header always set Content-Security-Policy "frame-ancestors 'self' *.yourdomain.com"

nginx – Módosítsa a szerverblokkot az alábbiak szerint:

add_header Content-Security-Policy "frame-ancestors 'self' *.domain1.com *.domain2.com *.domain3.com";

IIS – ezt úgy teheti meg, hogy hozzáadja a következőt a sajátjához web.config file:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="frame-ancestors 'self' *.yourdomain.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Douglas Karr

Douglas Karr CMO of OpenINSIGHTS és az alapítója a Martech Zone. Douglas több tucat sikeres MarTech startupnak segített, több mint 5 milliárd dolláros átvilágításban segédkezett a Martech akvizíciókban és befektetésekben, és továbbra is segíti a vállalatokat értékesítési és marketingstratégiáik megvalósításában és automatizálásában. Douglas nemzetközileg elismert digitális átalakulás és MarTech szakértő és előadó. Douglas egy Dummie's Guide és egy üzleti vezetői könyv szerzője is.

Kapcsolódó cikkek

Vissza a lap tetejére gombra
közel

Adblock észlelve

Martech Zone ingyenesen tudja biztosítani Önnek ezt a tartalmat, mivel webhelyünkkel bevételt szerezünk hirdetési bevételek, társult linkek és szponzorálás révén. Nagyra értékelnénk, ha eltávolítaná hirdetésblokkolóját, miközben megtekinti webhelyünket.