وقتی با استفاده از ویژگی target="_blank" به صفحهای در سایت دیگری لینک میدهید، میتوانید سایت خود را در معرض مشکلات عملکردی و امنیتی قرار دهید:
- ممکن است صفحه دیگر با همان فرآیندی که صفحه شما اجرا میشود، اجرا شود. اگر صفحه دیگر جاوا اسکریپت زیادی اجرا کند، ممکن است عملکرد صفحه شما دچار مشکل شود.
- صفحه دیگر میتواند با استفاده از ویژگی
window.openerبه شیءwindowشما دسترسی پیدا کند. این ممکن است به صفحه دیگر اجازه دهد صفحه شما را به یک URL مخرب هدایت کند.
اضافه کردن rel="noopener" یا rel="noreferrer" به لینکهای target="_blank" از این مشکلات جلوگیری میکند.
چگونه ممیزی مقصد بین مبدائی لایتهاوس با شکست مواجه میشود
لایتهاوس لینکهای ناامن به مقاصد بین مبدا را علامتگذاری میکند:

لایتهاوس از فرآیند زیر برای شناسایی لینکهای ناامن استفاده میکند:
- تمام تگهای
<a>که شامل ویژگیtarget="_blank"هستند اما ویژگیهایrel="noopener"یاrel="noreferrer"را ندارند، جمعآوری کنید. - هرگونه لینک با میزبان یکسان را فیلتر کنید.
از آنجایی که Lighthouse لینکهای با میزبان یکسان را فیلتر میکند، یک مورد خاص وجود دارد که هنگام کار بر روی یک سایت بزرگ باید مراقب آن باشید. اگر یک صفحه حاوی لینک target="_blank" به صفحه دیگری در سایت شما بدون استفاده از rel="noopener" باشد، پیامدهای عملکردی این ممیزی همچنان اعمال میشود. با این حال، شما این لینکها را در نتایج Lighthouse خود نخواهید دید.
بهبود عملکرد سایت و جلوگیری از آسیبپذیریهای امنیتی
به هر لینکی که در گزارش Lighthouse خود شناسایی کردهاید rel="noopener" " یا rel=" rel="noreferrer" اضافه کنید. به طور کلی، وقتی از 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به صفحه جدید جلوگیری میکند.
برای اطلاعات بیشتر ، بخش «اشتراکگذاری ایمن منابع بینمنبعی» را مطالعه کنید.