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