Rel=noopener

HTML odkazy obsahující otevření do nového okna pomocí target="_blank" s sebou nesou jisté bezpečnostní risiko.

Stránka, která byla do nového okna otevřena, může manipulovat s adresou stránky, která ji otevřela.

Po návratu z následující stránky otevřené do nového okna se to této stránky přidá #hash do URL:

Vše zajistí jednoduchý JS kód:

opener.location = 'http://jecas.cz/noopener#hash';
Povedlo se změnit URL.

Zneužití

Zneužít toto chování jde třeba pro phishing, kdy bude uživatel přesměrován na podvodnou stránkou za cílem získat hesla.

Využít změnu adresy se může hodit i pro zobrazení reklamy při kliknutí na odkaz.

Jen target=_blank?

Problém se netýká jen odkazů otevíraných automaticky do nového okna díky atributu target. Změna opener.location se projeví i v případě, že si nové okno otevře uživatel sám.

Řešení

V podporovaných prohlížečích (Chrome 49+, Opera 36+) by mělo jít zakázat změnu adresy pomocí atributu rel a hodnoty noopener:

<a href="http://example.com" rel="noopener">

Test:

Povedlo se změnit URL.

Podle mých testů ale blokování nefunguje ani v Chrome 50 a hash se změní.

Odkazy jinam

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Atribut pattern pro formuláře

Atribut pattern pro formulářové prvky

Validace formulářů regulárními výrazy na straně klienta bez JavaScriptu.

HTML atribut scoped

HTML atribut scoped

HTML 5.1 přichází s možností validně používat element <style> i mimo část <head>.

Autocomplete

Automatické vyplňování formulářů

Pomocí atributu autocomplete jde usnadnit a zrychlit vyplňování formulářů.

Placeholder

HTML atribut placeholder

HTML atribut placeholder slouží k zadání ukázkové hodnoty do formulářového pole.

Atribut download

HTML atribut download

HTML atribut download zlepšuje uživatelský dojem ze stahovaného souboru.

Komentáře