Widzę, że ludzie zalecają, aby za każdym razem, gdy użyje target="_blank"
się linku do otwarcia go w innym oknie, umieść rel="noopener noreferrer"
. Zastanawiam się, jak to uniemożliwia mi używanie na przykład Narzędzi dla programistów w Chrome i usuwanie atrybutu rel. Następnie kliknij link ...
Czy to łatwy sposób na zachowanie tej luki?
noopener
przynajmniej, ale jak wskazano poniżej,noreferrer
jest rendundant): hacks.mozilla.org/2020/07/firefox-79Odpowiedzi:
Możesz źle zrozumieć tę lukę. Możesz przeczytać więcej na ten temat tutaj: https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/
Zasadniczo dodawanie
rel="noopener noreferrer"
do linków chroni użytkowników Twojej witryny przed posiadaniem witryny, z którą łączysz się, i potencjalnym przejęciem przeglądarki (przez fałszywy JS).Pytasz o usunięcie tego atrybutu za pomocą Narzędzi dla programistów - to tylko potencjalnie naraziłoby Ciebie (osobę manipulującą atrybutem) na lukę.
źródło
noopener noreferrer
jest zbędny, ponieważnoreferrer
zawiera funkcjonalnośćnoopener
. html.spec.whatwg.org/multipage/links.html#link-type-noreferrerLinki z
target="_blank"
na nich są narażone na zamianę strony odsyłającej w tle, podczas gdy uwaga użytkownika jest odwracana przez nowo otwartą kartę. Jest to znane jako odwrócone tabnapping :Strona odsyłająca jest przechowywana w
window.opener
, a złośliwa witryna może to zmienić poprzez:if (window.opener) { window.opener.location = "https://phish.example.com"; }
Dodanie
rel="noopener noreferrer"
naprawia tę lukę we wszystkich głównych przeglądarkach.Zauważ, że teoretycznie możesz usunąć stronę
rel
klienta poprzez manipulację ... ale dlaczego miałbyś to robić? Wszystko, co robisz, to celowe narażanie się na atak.Inni użytkownicy, którzy odwiedzają tę samą witrynę (i nie modyfikują własnego kodu po stronie klienta) nadal byliby bezpieczni, ponieważ serwer nadal obsługiwałby rozszerzenie
rel="noopener noreferrer"
. Twoje usunięcie dotyczy tylko Ciebie.źródło
Znacznik
rel=”noopener”
lubrel=”noreferrer”
atrybuty kotwicy poprawiają bezpieczeństwo witryny, ale niektórzy ludzie chcą je zignorować, ponieważ sądzą, że wpłyną one na optymalizację ich witryny pod kątem wyszukiwarek, ale to tylko mit. Chroni poufność odbiorców Twojej witryny i zapobiega rozprzestrzenianiu się złośliwego kodu z witryn zewnętrznych.źródło
noreferrer
część.Odnośnie raportu z audytów Lighthouse Best Practices :
Generalnie, kiedy używasz
target="_blank"
, zawsze dodawajrel="noopener"
lubrel="noreferrer"
:Na przykład:
<a href="https://www.kaiostech.com/store/" target="_blank" rel="noreferrer"> KaiStore </a>
rel="noopener"
uniemożliwia nowej stronie dostęp dowindow.opener
właściwości i zapewnia jej uruchomienie w osobnym procesie.rel="noreferrer"
ma ten sam efekt, ale także zapobiegaReferer
wysłaniu nagłówka do nowej strony.Więcej informacji można znaleźć w oficjalnym dokumencie .
źródło
Jeśli konsola programisty wyświetla ostrzeżenie dotyczące
noopener noreferrer
, upewnij się, że dodajesz oba elementynoopener
inoreferrer
rel. link powinien wyglądać jak poniżej:<a href="www.google.com" target="_blank" rel="noopener noreferrer" />
źródło