Komentáře k článku

HTML5: nová bezpečnostní rizika

Bezpečnost webů je velmi široké téma, mnohokrát probírané a diskutované. Pojďme se dnes zaměřit především na rizika a hrozby, které přináší nové technologie z rodiny HTML5. S nimi totiž přichází i celá řada nových zranitelných míst, která jsou o to nebezpečnější, že o nich tvůrci webů zatím ještě nevědí.

Zpět na článek

17 komentářů k článku HTML5: nová bezpečnostní rizika:

  1. pb

    autofocus?!?

    Já pořád nevidím problém v autofocusu. Problém je spíš v tom, že něco pak může být v handleru onfocus, ne? Ale samotný autofocus by snad ublížit nemusel. Nebo jsem něco nepochopil?

    Nevěřte tomu, že stačí „vyhýbat se podezřelým stránkám, být opatrný a chodit jen na ty prověřené“. Nestačí. (Pro matematicky založené uživatele: Je to podmínka nutná, ale nikoli postačující.)

    Tady bych byl opatrněnší, podmínka nutná ale ne postačující by znamenalo, že na každé stránce, která je podezřelá nebo ne prověřená bude v každém případě nějaké nebezpečí.

    Díky za článek.

    1. Martin MalýAutor příspěvku

      Re: autofocus?!?

      Matematická vsuvka vyhozena.

      S autofocusem jako takovým není problém. Lépe řečeno: S ničím není problém, pokud to vždy a za všech okolností máme celé pod palcem. Na statické HTML stránce, kam se nikdy nevloží nic, co jsme sami nenapsali a nepřipravili, nejsou tyhle věci problém. Problémem mohou být, pokud se na stránce objeví něco, co mohl vložit uživatel. Od HTML po vložené SVG či XML data. Autofocus je problematický v takovém případě tím, že vyvolává některé události (onfocus, nepřímo onblur, onscroll) bez zásahu uživatele.

      1. Ifo

        Re: autofocus?!?

        U toho SVG je to ještě nebezpečnější o to, že to i tvůrce jednoduchých webů bude svádět k linkování odkazů na „pěkná SVG“, tak jako si dnes do svých stránek přilinkovávají pěkné obrázky.

  2. Daniel Steigerwald

    Pochvala + 'javascript:' je prostý label

    Jak už sem říkal, tvé články z poslední doby nasadily laťku hodně vysoko, a dnes se ti podařilo jí ještě o notný kus překonat, respekt :-)

    Malá poznámka, tenhle „podezřelý řetězec“ javascript:, je pouze label. Sám o sobě nedělá nic, ke spuštění JS nutný není, používá se pouze z nějakých prehistorických důvodů, klidně tam může být místo javascript:, napsáno trhnisi:

    Tedy tahle věta není zcela pravdivá:

    “ a v nich si ještě zkontrolujte, zda obsahují jen to, co povolíte (obzvlášť data URI nebo javascript: jsou nebezpečné).“

    https://developer.mozilla.org/en/JavaScript/Reference/Statements/label

    1. Jiří Kosek

      Re: Pochvala + 'javascript:' je prostý label

      Ono záleží na tom, jestli se jedná o kód v atributu href nebo v atributech pro události (on…), což v dané větě není z kontextu úplně jasné.

  3. juraj

    odveci

    Nerozumiem, ako s týmto súvisí HTML5. Odkrylo snáď nejaké nové bezpečnostné riziká webových aplikácii? Absolútne žiadne. Kontrola vstupných údajov má prebiehať na serveri a ak je toto dodržané, je úplne jedno, či mám Chrome 8 s podporou xy nových featur alebo IE5. Ak to dodržané nie je, rovnaký útok dokážem spustiť čiste pomocou HTML4.
    Myslím, že kľúčové slovo „HTML5“ slúži v poslednom čase čiste na získanie väčšieho záujmu o publikovaný text.

    1. Martin MalýAutor příspěvku

      Re: odveci

      Ano, technologie z rodiny HTML5 přinesly nová bezpečnostní rizika. Stačí se zamyslet, kde přesně byla ve starším HTML podpora autofocus nebo SVG. Ano, princip je stále stejný: kontrolovat na serveru. Přibylo ale věcí, které je potřeba kontrolovat, a není od věci na ně upozornit. S IE5 nemáte pravdu – nebude například napadnutelný pomocí tagu video (čímž mimochodem potvrzujete moje slova, že mnozí ani o nových možnostech netuší).
      Bohužel mám dojem, že jste článek nepochopil (nebo ani nečetl) a jen jste usoudil, že HTML5 je v titulku pro získání pozornosti.

      1. juraj

        Re: odveci

        Máte pravdu, nepochopil. Nepochopil som, aké nové riziká prinieslo HTML5.
        Jasné, je v poriadku upozorniť na to, kde všade je možné spustiť trebárs ľubovolný Javascript, avšak žiadna kontrola nesmie pracovať na báze blacklistov, teda systémom „mám tu v poli zakázané atribúty a elementy, tie ošetrím a ostatné kontrolou prejde“ – áno, takýto systém by nahrával pointe článku. Myslím ale, že každému zdravo uvažujúcemu programátorovi je jasné, že takáto kontrola neprichádza do úvahy. Funkčný filter vstupov musí pracovať tak, že ak nedovolí podstrčiť atribút onclick, nedovolí podstrčiť ani onerror, ani autofocus, ani abcxyz.
        Čo sa týka IE5, ak mi nejaký systém dovolí podvrhnúť <video>, zasa je to o tom, že už mi pravdepodobne dovolí podvrhnúť aj <brekeke onmouseover> a sme doma aj bez HTML5.
        Skrátka celý článok mi pripadá písaný v zmysle „tu a tu sa dá spustiť škodlivý kód bez <script>u“, ale naozaj nevidím reálnu hrozbu. Ak je aplikácia dobre napísaná, HTML5 jej na bezpečnosti neuberie; ak nie je, nepomôže ani svätená voda.

  4. jurasn

    Filtr jako PHP knihovna

    Dobrý den,
    nevíte o nějaké PHP knihovně, která by uměla kontrolovat texty na přítomnost nebezpečných sekvencí, případně je filtrovat?

  5. Vojta

    A co JS na tom originálním článku? :-)

    Dobrý den, předně moc děkuji za skvělý článek. Moc zajímavé počtení! Jen taková drobnost na okraj, chtěl jsem si zobrazit ten původní článek s XSS útoky na HTML5 a ve Firefoxu s aktivním doplňkem NoScript jsem se nedostal dál než za hlášku ať si povolím JavaScript. :-)

  6. Martin

    super článek v jednou vadou

    „…poukazem na minoritu lidí se zakázaným JS (a mýlí se).“ Nemýlí. Javascript si opravdu nevypíná prakticky nikdo (čtenáře rootu nelze považovat za reprezentativní vzorek). Stačí se mrknout na nějaké statistiky, třeba na toplistu. Článek je super, ale ty žvásty o vypínání JS jsou opravdu šíleně mimo, JS má zapnutý skoro 100 % uživatelů.

  7. imploder

    Prostě escapovat

    Úplně nejjednodušší a nejjistější ze všeho je prostě všechno před vypsáním zpracovat escapovací funkcí na HTML – v PHP htmlspecialchars(). Pokud není potřeba, aby uživatelé používali HTML, tak stačí prostě escapovat. Myslím, že tohle v článku mělo být zmíněno.

    Pokud nestačí prostý text, případně nějakým BBkód, tak jediná schůdná cesta je IMHO jasně definovaný whilelist a jinak všechno escapovat. Zjišťovat si, co všechno se dá zapsat v HTML (a co teď nově v HTML5) a podle toho vymýšlet nějaké složité na blacklistové filtry a spoléhat na to, že o HTML vím všechno a všechno nebezpečné mám ošetřené – to je cesta do pekel. Na něco skoro určitě zapomenu a když ne, tak aspoň to musím s každou novou verzí HTML (a každou nestandardní vychytávkou, co se objeví v prohlížečích) kontrolovat a aktualizovat. Je to rizikové. Nenapadá mě aplikace, kde by to bylo potřeba.

    Pokud programuju např. fórum, kam můžou uživatelé vkládat BBkódy a několik jednoduchých tagů jako „b“, „i“ nebo „pre“, tak žádný více či méně kompletní bezpečnostní seznam znát nepotřebuju a prostě budu všechno kromě těch několika tagů escapovat. Komu je teda vlastně článek určený?

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3362