O webu
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