Načítání mé stránky v iframe

HackForum

Načítání mé stránky v iframe#
Zdravím,

napadá někoho, jak spolehlivě vyřešit problém, aby nedocházelo k načítání mé stránky v iframe? Nechci stránku přesměrovat, ani nic podobného, ale jen chci, aby se v iframe prostě nenačítala...

Napadlo mě:
1) Využít JS
Nevýhoda1: JS nemá zapnutý každý
Nevýhoda2: Zjistím, že jsem v iframe díky (top!=self), ale zase nevím, jak přesně bych zastavil loadování stránky [stop()., ani window.stop() mi nefungovalo]

2) Akceptovat referer jen prázdný + z mé domény
Nevýhoda: Když bude odkazovat někdo na web regulérně, tak bude odfiltrován...

Nějaké sofistikovanější nápady?

Děkuji.
(odpovědět)
Shaim7.2.2012 13:11
re: Načítání mé stránky v iframe#
1) JS je sice varianta, ale není dokonalá, takže neporučuji
2) Content Security Policy - funkční jen ve FF > 4, takže také nedoporučuji
3) HTTP response hlavička X-FRAME-OPTIONS je tím správným řešením :)

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP7.2.2012 13:43
re: Načítání mé stránky v iframe#
.cCuMiNn.: jak jsme se dozvěděli mimo jiné na soom konferenci :)

----------
Uti, non abuti... - Užít, ne zneužít... | KdoSiOdJinud.cz - [link]
(odpovědět)
kdosiodjinud | Website7.2.2012 14:04
re: Načítání mé stránky v iframe#
Ano, vím, že o tom ccuminn mluvil, ale bohužel jsem si nestihl udělat poznámky a proto jsem se také ptal, jestli bude ccuminn svou přednášku zveřejňovat včetně praktických ukázek, či nikoliv :)

Děkuji ;)
(odpovědět)
Shaim7.2.2012 15:03
re: Načítání mé stránky v iframe#
ad 3) nesouhlasim
proc? Protoze kompatibilita [link]

tato hlavicka byla predstavena pomerne nedavno a treba IE6 nebo IE7 ji vubec nezna (necekane) a Opera az od 10.50.

Kdyz sectu usery, co maji stare browsery (predevsim IE6 a 7), tak to bude vetsi pocet, nez pocet useru bez JS (s vyplym JS). Takze rozhodne doporucuju kombinaci 1 a 3, pricemz pokud bych k necemu mel rici, ze je to nedokonala varianta, tak prave spis ke 3 - protoze je vetsi pocet useru, co tuhle hlavicku neodesila - viz. vyse.

----------
Cow power by Gentoo...
(odpovědět)
Anonymous_ | E-mail7.2.2012 15:10
re: Načítání mé stránky v iframe#
Anonymous_: dobrý postřeh... co na to ccuminn?

Btw, níže uvedené nefunguje.. Možné příčiny? mod_headers mám zapnutý...
Určitě by to skrz apache bylo lepší, než přidávat do každého webu zvlášť...
[link]
How to send out the header using apache
Add this to your httpd.conf:
Header always append X-Frame-Options SAMEORIGIN
(odpovědět)
Shaim7.2.2012 15:31
re: Načítání mé stránky v iframe#
Pokud dnes ještě někdo používá IE6, tak volba clickjackingu pro útok je jak dělo na vrabce. Na tento prohlížeč je možné vymyslet daleko jednodušší útoky s daleko většími dopady.

OK, souhlasím s tím, že zvolit kombinaci více variant ochrany je vždy nejlepší řešení a proto snad ani nebylo potřeba se o této možnosti zmiňovat. Sepsal jsem varianty a ukázal jsem, která z nich je nejlepší (což 3. opravdu je). Ochrana pomocí JS ve FF ti je totiž často naprosto k ničemu, když si můžeš načíst do rámu zdroják stránky a JS se tak vůbec nedostane interpretu pod ruku.

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP7.2.2012 15:45
re: Načítání mé stránky v iframe#
Anonymous_: Takze rozhodne doporucuju kombinaci 1 a 3, pricemz pokud bych k necemu mel rici, ze je to nedokonala varianta, tak prave spis ke 3 - protoze je vetsi pocet useru, co tuhle hlavicku neodesila - viz. vyse.

Nevím, jestli ses jen překlepnul, ale tuto hlavičku neodesílá žádný prohlížeč. Odesílá ji server.

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP7.2.2012 15:48
re: Načítání mé stránky v iframe#
.cCuMiNn.: neřeším tuto situaci kvůli clickjackingu, ale kvůli načítání speciálních url adres do iframe.
Načtení obsahu = peníze na účet majitele toho obsahu. V případě umístění iframe na nějakou navštěvovanou stránku se každé UIP zobrazení iframe počítá jako regulérní zobrazení obsahu za které dostane také majitel obsahu neprávem peníze. Proto je nutno tuto situaci vyřešit, aby se nedalo načítat do iframe... Napadá tě něco?
(odpovědět)
Shaim7.2.2012 15:55
re: Načítání mé stránky v iframe#
Shaim: Nejdřív ještě pár slov k tomu, proč nepoužít právě a jen zmíněný JS. O tom, že by bylo možné ve FF načítat zdroják stránky jsem psal, ted se tedy zmíním ještě o dalších prohlížečích, které obsahují XSS filtr. Jak tyto filtry pracují? Když požadavek odcházející na server obsahuje kód JS, který je následně obsažen v těle HTML, tak je tento kód zneškodněn. Co se tedy stane, když do našeho požadavku na stránku vložíme kód, který hlídá načtení v rámu?... To jen tak pro zajímavost :)

K tomu nastavení APACHE:
Pokud máš povolený headers_module tak níže uvedené funguje bez problému:

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

No a k tomu tvému upřesnění, o co vlastně jde. Toto je celkem oříšek, který by vydal na samostatný článek. Zkus se podívat, jak to mají udělané na Skliku, což se nezdá být složité a bez toho, abys rozšifroval kód, který předávají to neobejdeš.

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP7.2.2012 17:40
re: Načítání mé stránky v iframe#
.cCuMiNn.:
K Apache, měl jsi pravdu, chyba byla samozřejmě u mě a byla dost hloupá, vyřešeno, funguje ;) Dále jsem také při zkoumání narazil na další X-* hlavičky ohledně mime-sniff a xss.

Oříšek, který by vydal na samostatný článek? Hm, tak aspoň je námět na článek, ne? :P

Na ten Sklik mrknu.

Děkuji.
(odpovědět)
Shaim8.2.2012 7:40
re: Načítání mé stránky v iframe#
Teď mi došlo, že ty chceš vyplácet odměnu již za pouhé zobrazení, ne za proklik. Tady to bude možná ještě o něco složitější.
Pochopil jsem správně, že si webmasteři vloží na své stránky iframe s tvým obsahem? Co všechno chceš ošetřit? Aby nebylo možné iframe načítat na jiné stránce, než jaká byla zadána při registraci? Aby nebylo možné udělat banner neviditelný? Aby nebylo možné přičítat počty zobrazení využitím CSRF? Co ještě?

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP8.2.2012 8:14
re: Načítání mé stránky v iframe#
.cCuMiNn.: Ano, přesně tak, za zobrazení... Nikoliv iframe, ale vloží si na web třeba obrázek v regulérním tvaru:
<a href="[link]"><img src="[link]" /></a>
Při zobrazení tohoto linku se z UIP započte zobrazení(peníze).
[link]

Takže již první podvodníci zkoušeli iframe, který jsem nyní zakázal dle X-FRAME-OPTIONS, ovšem jak jsem četl, tak starší prohlížeče(IE6/IE7) tuto hlavičku nepodporují :-/

Ochranu proti CSRF mám zavedenou přes tokeny.(inspirace od Jakuba Vrány)

Nějaké tipy?

Případně si rád počkám na souhrnný článek o této problematice.. Plánuješ na toto téma sepsat article? :) Určitě je to zajímavé téma a věřím, že by to bylo přínosem.

Offtopic: Určitě bych na soom diskuze přidal kromě tlačítka "Odeslat" také tlačítko "Náhled" ;)
(odpovědět)
Shaim8.2.2012 10:38
re: Načítání mé stránky v iframe#
.cCuMiNn.: Ještě mě napadá, šlo by nějak to nastavení apache:
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
upravit, aby se to vztahovalo pouze na weby, které mají jinou IP(nacházejí se na jiném serveru)?


(odpovědět)
Shaim9.2.2012 22:49
re: Načítání mé stránky v iframe#
Shaim: Skusme se zamyslet, zda je to možné...
Jakým postupem je obsah načítán prohlížečem? Prohlížeč odešle požadavek na server, ze kterého dokáže server zjistit maximálně IP počítače, který požadavek zasílá. Dokáže "někdy" podle refereru zjistit i která stránka požadavek vyvolala, a která tedy bude s největší pravděpodobností vyžádaný obsah zobrazovat. Nikde se ale server nemá možnost dozvědět, jaká je IP adresa, ze které byla stránka (která o obsah žádá) načtena. Jediný kdo může porovnávat domény (ne IP) vkládající a vkládané stránky je prohlížeč. Na tvou otázku je tedy odpověď ne, nelze.

Napadají mě tyto varianty řešení:
1) Zkus se podívat ještě na volbu ALLOW-FROM u X-FRAME-OPTIONS, kterou by mělo být možné definovat, které domény mohou obsah do rámu načítat.

2) Zkus to vyřešit přes nějaký identifikátor v požadavku. Například klientovy A, který chce reklamu zobrazovat na doméně DOMAIN_A.CZ přiředíš identifikátor XYZ123. Reklamu pak bude tento člověk načítat dotazem GET [link] Ty pak na straně serveru vrátíš reklamu a do ALLOW-FROM vložíš DOMAIN_A.CZ.

To jen tak v rychlosti, chtělo by to se nad tím zamyslet určitě detailněni.

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP10.2.2012 8:03

Zpět
 
 
 

 
BBCode