Jak bezpečně zobrazit nedůvěryhodné HTML zvenčí?
- DefenestrationPraha
- Člen | 127
Dobré listopadové odpoledne přeju,
a obracím se na vás všechny s následujícím problémem.
Moje aplikace dostala nějaké HTML, dejme tomu soubor ve formátu text/html
v nějakém větším balíčku dat. Jeden z prezentérů, které mám, je
prezentér zobrazující náhled souboru. U jiných formátů, jako je JSON
nebo TXT, prostě strčím hrubá data do tagu <pre>
a nemá
se co zkazit.
Ale jak s tím HTML? Rád bych jej také hezky zobrazil (aspoň obsah elementu <body>), ale zároveň z něj chci vyfiltrovat všechny vulnerability či zákeřné věci jako XSS.
Patrně bych měl nějakým způsobem použít balíček
Nette\Utils\Html
, rozparsovat si zdrojový soubor a do šablony pak
strčit vzniklý element. Ale není mi jasné, jak na to.
- dakur
- Člen | 493
Nette\Utils\Html
je jen základní reprezentace HTML tagu a
usnadňuje vytváření HTML kódu v PHP. K tomu svým API usnadňuje
odlišení toho, co má a nemá být escapováno. Potud je to skvělé, ale
není to parser.
Jestli potřebuješ ten soubor vypsat, tj. vidět, co ten kód vykoná po
zobrazení v prohlížeči, použij např. ezyang/htmlpurifier
či
nějakou obdobu. Ten skutečně kód naparsuje a pak nad ním dělá
úpravy.