sadržaj Marketing

Razbijanje Iframea: Kako zaustaviti neovlašteno postavljanje u okvir vašeg sadržaja

Jednom me je posjetilac moje stranice obavijestio kada je kliknuo na jednu od mojih veza cvrkut; doveden je na moju stranicu s velikim iskačućim prozorom i upozorenjem o zlonamjernom kodu. To je dovoljno da nekoga uplašim, pa sam počeo da radim neke testove. Ništa nije bilo u redu sa mojom web lokacijom – problem je bio link.

Veza na drugoj stranici stvorila je alatnu traku na vrhu koja je ohrabrivala ljude da kliknu na zlonamjernu vezu dok učitavaju moju web stranicu u iframe ispod. Većini ljudi može izgledati da moja stranica širi zlonamjerni kod. Ne bih rekao da mi se sviđa bilo koja lokacija koja učitava moju stranicu unutar iframe-a, pa sam uradila ono što bi svaki razuman štreber uradio... Učitao sam razbijanje okvira.

Međutim, postavljanje u okvir vaše stranice nije uvijek zlonamjerno. Nedavno smo podijelili alat, Sniply, da dodate poziv na akciju (CTA) na bilo koju vezu na web stranicu koju dijelite. To radi tako što ugrađuje cijelu vašu web lokaciju u iframe i primjenjuje div na vaš sadržaj s pozivom na akciju.

Ali ja sam prilično konkretan u pogledu svog sadržaja i truda u koji sam uložio Martech Zone, tako da ne želim da bilo ko uokviruje moj sadržaj, čak ni sa platformom za dijeljenje linkova. Prilikom nekih istraživanja, postoji nekoliko načina da se ovo riješi.

Kako zaustaviti uokvirivanje vašeg sadržaja JavaScript-om

Ovaj JavaScript kod provjerava da li je trenutni prozor (self) nije najviši prozor (top). Ako nije, to znači da je stranica u okviru, iframe-u ili slično, a skripta preusmjerava najviši prozor na URL trenutnog prozora. Ovo efektivno izbije iframe-a.

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

Postoji nekoliko nedostataka ovog pristupa:

  1. Oslanjanje na JavaScript: Ako je korisniku onemogućen JavaScript, ova metoda neće raditi.
  2. Kašnjenja: Može doći do malog kašnjenja prije nego što se JavaScript izvrši, tokom kojeg bi uokvirena verzija vaše stranice i dalje mogla biti vidljiva.
  3. Ograničenja unakrsnog porijekla: U nekim situacijama, politika istog porijekla može spriječiti da ova skripta radi kako je predviđeno. Ako je nadređeni dokument na drugoj domeni, možda neće moći pristupiti top.location.href.
  4. Potencijal za Frame-Busting-Busters: Postoje i skripte (zvane frame-busting-busters) koje mogu spriječiti rad skripti za razbijanje okvira.

Bolji pristup je korištenje HTTP zaglavlja odgovora.

X-Frame-Options i Content-Security-Policy

oba X-Frame-Options i Content-Security-Policy (SPRS) su HTTP zaglavlja odgovora koja se koriste za poboljšanje sigurnosti web stranice. Svaki od njih ima malo različite svrhe i imaju različite nivoe fleksibilnosti.

X-Frame-Options je starije HTTP zaglavlje posebno dizajnirano za kontrolu da li se vaša stranica može ugraditi u a <frame>, <iframe>, <embed>, ili <object> na drugom sajtu. Ima tri moguće direktive:

  1. DENY – Stranica se ne može prikazati u okviru, bez obzira na to koja lokacija to pokušava.
  2. SAMEORIGIN – Stranica se može prikazati samo u okviru na istom početku kao i sama stranica.
  3. ALLOW-FROM uri – Stranica se može prikazati samo u okviru na navedenom početku.

Kako god, X-Frame-Options je ograničen po tome što ne može da se nosi sa složenijim scenarijima, kao što je omogućavanje uokvirivanja iz više različitih izvora ili korišćenje zamenskih znakova za poddomene. Ne podržavaju svi pretraživači ALLOW-FROM direktiva.

Content-Security-Policy, s druge strane, je mnogo fleksibilnije i moćnije HTTP zaglavlje. Dok može sve X-Frame-Options može učiniti i mnogo više, njegova primarna svrha je spriječiti širok spektar napada ubrizgavanjem koda, uključujući skriptiranje na više lokacija (XSS) i clickjacking. Radi tako što navede bijelu listu pouzdanih izvora sadržaja (skripte, stilovi, slike, itd.).

Za kontrolu okvira, CSP koristi frame-ancestors direktiva. Možete navesti više izvora, uključujući više domena i poddomene sa zamjenskim znakovima. Evo primjera:

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

Ovo bi omogućilo da se stranica uokviri na vlastitu web lokaciju ('self'), na yourdomain.com, i na bilo kojoj poddomenu od domain2.com.

CSP se preporučuje kao zamena za X-Frame-Options, pošto može sve da podnese X-Frame-Options mogu učiniti i još mnogo toga. Iako većina modernih pretraživača podržava CSP, možda još uvijek postoje neki stari ili manje uobičajeni pretraživači koji ga ne podržavaju u potpunosti.

Kako zaustaviti uokvirivanje vašeg sadržaja pomoću HTML-a

Sada postoji meta oznaka Content-Security-Policy koja se može primijeniti i koja onemogućuje mogućnost iframeiranja vašeg sadržaja:

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

Efikasnost HTML meta oznake je ograničena jer ne poštuju svi pretraživači Content-Security-Policy kada se postavi pomoću meta oznake.

Kako zaustaviti uokvirivanje vašeg sadržaja pomoću HTTP zaglavlja

Bolje je koristiti HTTP zaglavlja X-Frame-Options or Content-Security-Policy za kontrolu kadriranja. Ove opcije su pouzdanije i sigurnije i rade čak i ako je JavaScript onemogućen. JavaScript metod bi se trebao koristiti samo kao posljednje sredstvo ako nemate kontrolu nad serverom za postavljanje HTTP zaglavlja. Za svaki primjer zamijenite yourdomain.com sa vašom stvarnom domenom.

apaš – Izmijenite svoj .htaccess fajl kako slijedi:

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

Nginx – Modificirajte svoj blok servera na sljedeći način:

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

IIS – učinite to dodavanjem sljedećeg na svoj web.config file:

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

WordPress – uradite ovo dodavanjem ovog koda u vašu functions.php datoteku:

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');

Ove konfiguracije će dozvoliti samo da vaša stranica bude ugrađena unutar iframe-ova na točno određenoj domeni koju navedete, a ne na bilo kojoj poddomenu domene. Ako želite dozvoliti određene poddomene, morat ćete ih eksplicitno navesti, npr subdomain1.yourdomain.com subdomain2.yourdomain.com, i tako dalje.

Dozvolite uokvirivanje vašeg sadržaja sa više domena

Možete navesti više domena sa zaglavljem HTTP odgovora Content-Security-Policy i direktivom frame-preci. Razmak bi trebao odvojiti svaku domenu. Evo primjera:

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

apaš – Izmijenite svoj .htaccess fajl kako slijedi:

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

Nginx – Modificirajte svoj blok servera na sljedeći način:

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

IIS – učinite to dodavanjem sljedećeg na svoj 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>

Dozvolite uokvirivanje vašeg sadržaja sa zamjenske domene

Također možete odrediti zamjenski znak za sve poddomene sa Content-Security-Policy HTTP zaglavlje odgovora i direktiva frame-preci. Evo primjera Content-Security-Policy kod koji treba ažurirati:

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

apaš – Izmijenite svoj .htaccess fajl kako slijedi:

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

Nginx – Modificirajte svoj blok servera na sljedeći način:

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

IIS – učinite to dodavanjem sljedećeg na svoj 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 je CMO of OpenINSIGHTS i osnivač Martech Zone. Douglas je pomogao desetinama uspješnih MarTech startupova, pomogao je u dubinskom pregledu od preko 5 milijardi dolara u Martechovim akvizicijama i investicijama, te nastavlja da pomaže kompanijama u implementaciji i automatizaciji njihovih prodajnih i marketinških strategija. Douglas je međunarodno priznati stručnjak za digitalnu transformaciju i MarTech stručnjak i govornik. Douglas je također objavljeni autor Dummie's vodiča i knjige o poslovnom liderstvu.

Vezani članci

Nazad na vrh dugmeta
blizu

Adblock otkriven

Martech Zone je u mogućnosti da vam pruži ovaj sadržaj bez ikakvih troškova jer mi unovčavamo našu stranicu putem prihoda od oglasa, partnerskih veza i sponzorstava. Bili bismo zahvalni ako biste uklonili svoj blokator oglasa dok gledate našu web stranicu.