קישור לדף באתר אחר באמצעות המאפיין target="_blank"
עלול לחשוף את האתר לבעיות של ביצועים ואבטחה:
- הדף השני יכול לפעול באותו תהליך כמו הדף שלכם. אם בדף השני פועלת כמות גדולה של JavaScript, ביצועי הדף עלולים להיפגע.
- הדף השני יכול לגשת לאובייקט
window
באמצעות המאפייןwindow.opener
. זה עלול לאפשר לדף האחר להפנות את הדף שלכם לכתובת URL זדונית.
כדי למנוע את הבעיות האלה, אפשר להוסיף rel="noopener"
או rel="noreferrer"
לקישורי target="_blank"
.
איך נכשלת בדיקת היעדים ממקורות שונים ב-Lighthouse
מערכת Lighthouse מסמנת קישורים לא בטוחים ליעדים ממקורות שונים:
ב-Lighthouse נעשה שימוש בתהליך הבא כדי לזהות קישורים כלא בטוחים:
- עליכם לאסוף את כל תגי
<a>
שמכילים את המאפייןtarget="_blank"
, אבל לא את המאפייניםrel="noopener"
אוrel="noreferrer"
. - מסננים את כל הקישורים לאותו מארח.
מכיוון שמערכת Lighthouse מסננת קישורים מאותו מארח,
יש מקרה קצה שכדאי לשים לב אליו אם אתם עובדים באתר גדול:
אם דף אחד מכיל קישור target="_blank"
לדף אחר באתר בלי להשתמש ב-rel="noopener"
,
ההשלכות של הביקורת הזו עדיין יחולו.
עם זאת, הקישורים האלה לא יופיעו בתוצאות של Lighthouse.
איך לשפר את ביצועי האתר ולמנוע נקודות חולשה באבטחה
מוסיפים rel="noopener"
או rel="noreferrer"
לכל קישור שמזוהה בדוח Lighthouse.
באופן כללי, כשמשתמשים ב-target="_blank"
, תמיד צריך להוסיף rel="noopener"
או rel="noreferrer"
:
<a href="https://examplepetstore.com" target="_blank" rel="noopener">
Example Pet Store
</a>
- באמצעות
rel="noopener"
לא ניתן לגשת לדף החדש לנכסwindow.opener
ולוודא שהוא פועל בתהליך נפרד. - ל-
rel="noreferrer"
יש אותה השפעה, אבל היא גם מונעת את השליחה של הכותרתReferer
לדף החדש. מידע נוסף זמין בקטע סוג הקישור "noreferrer".
מידע נוסף זמין בפוסט שיתוף בטוח של משאבים ממקורות שונים.