Gdy połączysz się ze stroną w innej witrynie za pomocą atrybutu target="_blank", możesz narazić swoją witrynę na problemy z wydajnością i bezpieczeństwem:
- Inna strona może działać w tym samym procesie co Twoja strona. Jeśli na drugiej stronie działa dużo kodu JavaScript, może to negatywnie wpłynąć na wydajność Twojej strony.
- Druga strona może uzyskać dostęp do obiektu
windowz właściwościąwindow.opener. Może to umożliwić przekierowanie Twojej strony na szkodliwy adres URL.
Dodanie do linków target="_blank" atrybutów rel="noopener" lub rel="noreferrer"
pozwala uniknąć tych problemów.
Przyczyny niepowodzenia audytu Lighthouse dotyczącego miejsca docelowego z innej domeny
Lighthouse oznacza niebezpieczne linki do innych domen:
Aby określić, czy linki są niebezpieczne, Lighthouse stosuje ten proces:
- Zbierz wszystkie tagi
<a>, które zawierają atrybuttarget="_blank", ale nie zawierają atrybutówrel="noopener"anirel="noreferrer". - Odfiltruj wszystkie linki do tego samego hosta.
Lighthouse odfiltrowuje linki do tej samej domeny, więc w przypadku dużych witryn może wystąpić sytuacja, na którą warto zwrócić uwagę. Jeśli jedna strona zawiera target="_blank"link do innej strony w Twojej witrynie bez użyciarel="noopener", nadal obowiązują konsekwencje tego audytu dla skuteczności.
Nie zobaczysz jednak tych linków w wynikach Lighthouse.
Zwiększanie wydajności witryny i zapobieganie lukom w zabezpieczeniach
Dodaj rel="noopener" lub rel="noreferrer"
do każdego linku zidentyfikowanego w raporcie Lighthouse.
Gdy używasz target="_blank", zawsze dodawaj rel="noopener" lub rel="noreferrer":
<a href="https://examplepetstore.com" target="_blank" rel="noopener">
Example Pet Store
</a>
rel="noopener"uniemożliwia nowej stronie dostęp do właściwościwindow.openeri zapewnia, że działa ona w osobnym procesie.rel="noreferrer"działa tak samo i zapobiega też wysyłaniu nagłówkaRefererna nową stronę.
Więcej informacji znajdziesz w artykule Bezpieczne udostępnianie zasobów z różnych domen.