Se colleghi una pagina su un altro sito utilizzando l'attributo target="_blank"
, puoi esporre il sito a problemi di prestazioni e sicurezza:
- L'altra pagina potrebbe essere eseguita nello stesso processo della pagina. Se nell'altra pagina viene eseguito molto codice JavaScript, le prestazioni della pagina potrebbero risentirne.
- L'altra pagina può accedere all'oggetto
window
con la proprietàwindow.opener
. Ciò potrebbe consentire all'altra pagina di reindirizzare la tua pagina a un URL dannoso.
L'aggiunta di rel="noopener"
o rel="noreferrer"
ai tuoi link target="_blank"
evita questi problemi.
Come non va a buon fine il controllo della destinazione tra origini di Lighthouse
Lighthouse segnala i link non sicuri che rimandano a destinazioni multiorigine:
Lighthouse utilizza la seguente procedura per identificare i link come non sicuri:
- Raccogli tutti i tag
<a>
che contengono l'attributotarget="_blank"
, ma non gli attributirel="noopener"
orel="noreferrer"
. - Filtrare i link dello stesso host.
Poiché Lighthouse filtra i link dello stesso host, c'è un caso limite da tenere presente se lavori su un sito di grandi dimensioni: se una pagina contiene un link target="_blank"
a un'altra pagina del sito senza utilizzare rel="noopener"
, le implicazioni sulle prestazioni di questo controllo rimangono valide.
Tuttavia, non vedrai questi link nei risultati di Lighthouse.
Come migliorare le prestazioni del sito e prevenire le vulnerabilità di sicurezza
Aggiungi rel="noopener"
o rel="noreferrer"
a ogni link identificato nel report Lighthouse.
In generale, quando usi target="_blank"
, aggiungi sempre rel="noopener"
o rel="noreferrer"
:
<a href="https://examplepetstore.com" target="_blank" rel="noopener">
Example Pet Store
</a>
rel="noopener"
impedisce alla nuova pagina di accedere alla proprietàwindow.opener
e garantisce che venga eseguita in un processo separato.rel="noreferrer"
ha lo stesso effetto, ma impedisce anche l'invio dell'intestazioneReferer
alla nuova pagina. Vedi Tipo di link "noreferrer".
Per ulteriori informazioni, consulta il post relativo alla condivisione sicura di risorse multiorigine.