středa 21. května 2008

Iframe dědičný a bezpečný

Před pár dny dostala značka iframe v HTML5 dva nové atributy seamless a sandbox. Oba jsou v HTML zcela nové - podívejme se, co přesně znamenají.
interface HTMLIFrameElement : HTMLElement {
attribute DOMString src;
attribute DOMString name;
attribute DOMString sandbox;
boolean DOMString seamless;
};
Seamless - iframe součástí stránky

Pokud atribut seamless obsahuje hodnotu true, bude obsah iframe zobrazen jako skutečná součást rodičovské stránky (resp. bariéra mezi rodičovským dokumentem a obsahem iframu je o něco snížena) to značí zejména:
  • odkazy v iframu se budou otevírat v rodičovském dokumentu a nikoliv v iframu
  • dojde k jistému dědění CSS pravidel z rodičovského dokumentu do iframu
Podmínkou je, aby rodičovský dokument a dokument v iframe pocházely ze stejné domény (není tedy možno nahrát cizí web a vnutit mu vlastní vzhled).

Sandbox - iframe, kterému nevěříme

O opak se snaží atribut sandbox, který naopak iframe omezuje a bariéru mezi rodičovským dokumentem a dokumentem v iframe zvyšuje. Sanbox může obsahovat kombinaci následujících hodnot oddělených mezerou: allow-same-origin, allow-forms, a allow-scripts.

Přítomnost atributu sandbox vždy zabrání dokumentu v iframe:
  • navigovat jiné dokumenty než je on sám (např. když dokument v iframu změnil URL rodičovského dokumentu)
  • vytvářet nové kontexty prohlížeče (v orig. browsing context - myšleno např. otevírat nová okna)
  • používat libovolné pluginy (ty se často řídí svými pravidly a mohly by tak pravidla sandboxu "nějak obejít").
A volitelně dále zabrání i:
  • číst hodnoty cookies pokud není nastavena hodnota allow-same-origin (iframe se tak chová jakoby byl z jiné domény, i přesto že je ze stejné)
  • odesílat formuláře pokud není nastavena hodnota allow-forms
  • spouštět skripty pokud není nastavena hodnota allow-scripts
Oba atributy byly přidány teprve nedávno, je pravděpodobné, že budou ještě diskutovány a ve výsledné specifikaci se tak mohou objevit ve zcela jiné podobně nebo dokonce vůbec. Výše uvedené chápejte pouze jako prvotní nástřel a nikoliv jako definitivní rozhodnutí.

Více v oznámení v mailing listu.

2 komentáře:

  1. Zajímavý a užitečný nápad, zvláště Seamless. Popravdě, hodil by se mi tak před dvěma měsíci u jednoho projektu. Nu což, snad se dočkáme v HTML5 :)

    OdpovědětVymazat
  2. no nevím zda to chápu dobře, ale sháním řešení aby odkaz na url který je v obsahu iframu po kliknutí nahodil nové okno v prohlížeči s www která je uvedena v odkazu.

    OdpovědětVymazat

Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.