הקישורים ליעדים ממקורות שונים לא בטוחים

קישור לדף באתר אחר באמצעות המאפיין target="_blank" עלול לחשוף את האתר לבעיות של ביצועים ואבטחה:

  • הדף השני יכול לפעול באותו תהליך כמו הדף שלכם. אם בדף השני פועלת כמות גדולה של JavaScript, ביצועי הדף עלולים להיפגע.
  • הדף השני יכול לגשת לאובייקט window באמצעות המאפיין window.opener. זה עלול לאפשר לדף האחר להפנות את הדף שלכם לכתובת URL זדונית.

כדי למנוע את הבעיות האלה, אפשר להוסיף rel="noopener" או rel="noreferrer" לקישורי target="_blank".

איך נכשלת בדיקת היעדים ממקורות שונים ב-Lighthouse

מערכת Lighthouse מסמנת קישורים לא בטוחים ליעדים ממקורות שונים:

ביקורת לגבי Lighthouse מציגה קישורים לא בטוחים ליעדים ממקורות שונים

ב-Lighthouse נעשה שימוש בתהליך הבא כדי לזהות קישורים כלא בטוחים:

  1. עליכם לאסוף את כל תגי <a> שמכילים את המאפיין target="_blank", אבל לא את המאפיינים rel="noopener" או rel="noreferrer".
  2. מסננים את כל הקישורים לאותו מארח.

מכיוון שמערכת 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".

מידע נוסף זמין בפוסט שיתוף בטוח של משאבים ממקורות שונים.

מקורות מידע