Iframe je párový HTML tag <iframe>, který vytváří vnořený kontext prohlížení. Je to jeden z nejstarších a nejpoužívanějších způsobů, jak skládat webový obsah z více různých zdrojů. Hlavní výhodou je, že obsah uvnitř rámce je nezávislý na okolní stránce – má vlastní historii, styly a skripty.
Pro vložení rámce se používá následující kód:
<iframe src="https://priklad.cz" width="600" height="400"></iframe>
Iframy jsou všudypřítomné, i když si jich uživatel často nevšimne:
Protože iframe umožňuje zobrazit cizí web, přináší s sebou značná bezpečnostní rizika:
Tento atribut umožňuje omezit schopnosti obsahu uvnitř rámu (např. zakázat spouštění skriptů, odesílání formulářů nebo otevírání vyskakovacích oken).
<iframe src="..." sandbox="allow-scripts"></iframe>
Prohlížeče brání skriptům z hlavní stránky přistupovat k obsahu uvnitř rámu (a naopak), pokud oba nepocházejí ze stejné domény. To chrání citlivá data uživatelů.
Jak bylo zmíněno u tématu Clickjacking, útočníci mohou zneužít iframe k překrytí legitimních stránek. Weby se brání pomocí hlaviček:
| Vlastnost | Výhoda | Nevýhoda |
|---|---|---|
| Izolace | Chyba v rámu neshodí celou stránku. | Složitější komunikace mezi rámem a rodičem. |
| Vkládání | Snadné vložení cizího obsahu (video, mapy). | Může zpomalit načítání stránky (více HTTP požadavků). |
| SEO | Obsah v rámu je pro vyhledávače často neviditelný. | Vyhledávače nemusí indexovat text vnořený přes iframe. |
| Responsivita | - | Iframy se špatně přizpůsobují různým velikostem displejů. |
Související pojmy: HTML, Clickjacking, CSP, HTTP, Pixel, JavaScript, SEO.