لینک noopener چیست، آیا برای امنیت وردپرس لازم است؟

همانطور که می دانید در زبان نشانه گذاری HTML برای ایجاد یک لینک یا پیوند از تگ <a> به صورت زیر استفاده می شود، در سیستم مدیریت محتوای وردپرس هم زمانی که پیوندی را به محتوای یک صفحه اضافه می کنید در پشت صحنه کدی مشابه زیر تولید خواهد شد.

<a href="https://example.com">Anchor Text</a>

 

در واقع چیزی مشابه تصویر زیر که ویژگی های rel و target هم برای آن مشخص شده است.

مثالی از لینک نوفالو

 

با این حال قبل از ورد به بحث اصلی بهتر است کمی به بررسی تگ a بپردازیم:

آدرس مقصد یک صفحه وب در ویژگی href قرار می گیرد که بازدیدکننده با کلیک بر روی متن پیوند(اصطلاحا انکرتکست) به آن آدرس منتقل خواهد شد.

ویژگی مهم دیگر rel است که از مقادیر زیر تشکیل می شود:

  • nofollow
  • noreferrer
  • noopener

مطمئنا شما می توانید این مقادیر را با یکدیگر ترکیب کرده و لینک موردنظر خود را ایجاد کنید.

<a href="https://example.com" rel="nofollow noreferrer">Anchor Text</a>

 

برای آشنایی بیشتر با لینک های nofollow و noreferrer پیشنهاد می کنیم مقالات لینک نوفالو(nofollow) چیست، چه زمانی از نوفالو استفاده کنیم؟ و لینک noreferrer چیست، چه تاثیری روی سئو دارد؟ را مطالعه فرمائید.

آخرین ویژگی target است که همراه با rel=noopener بدین صورت استفاده می شود.

<a href="https://example.com" rel="noopener" target="_blank">Anchor Text</a>

 

مقدار blank_ باعث خواهد شد که آدرس مقصد در یک صفحه یا تب جدید مرورگر باز شود و بازدیده کننده همچنان صفحه مبداء را در اختیار داشته باشد.

لینک noopener دقیقا چه کاری انجام می دهد؟

در حالت کلی زمانی که ویژگی target=_blank را به یک پیوند خارجی اضافه می کنید در واقع به آدرس مقصد این اجازه را می دهید تا از طریق شی window و ویژگی های جاوا اسکریپت به اطلاعات صفحه مبداء(ارجاع دهنده) دسترسی داشته باشد و کنترل آن صفحه را در اختیار بگیرد، حال اگر آدرس مقصد غیر قابل اطمینان و نامعتبر باشد می تواند اقدام به سرقت اطلاعات و انتشار کدهای مخرب کند.

همچنین این اتفاق می تواند در بخش کامنت های یک وب سایت روی دهد، چرا که بازدیدکنندگان هر چیزی از جمله آدرس های مخرب را برای شما ارسال می کنند، پس باید حواستان به محتوای تولید شده آنها هم باشد.

به عنوان مثال یکی از بازدیدکنندگان وب سایت تان دیدگاهی ارسال کرده است با این مضمون، “به وب سایت ما سر بزنید” شما هم دیدگاه را تایید می کنید و نام ارسال کننده کامنت هم به عنوان متن انکرتکست آدرس فرضی http://mywebsite.com ایجاد می شود.

حال سایر کاربران با دیدن این کامنت بر روی لینک مربوطه کلیک می کنند و به صفحه ای که حاوی کدهای زیر است منتقل می شوند، صفحه مقصد به راحتی به آدرس ارجاع دهنده که وب سایت شما است دسترسی خواهد داشت و می تواند آنرا تغییر دهد، این کدها باعث می شود آدرس صفحه مبداء(ارجاع دهنده) که کاربر در آن حضور دارد به http://hacker.com/malicious.html تغییر کرده و بارگذاری شود.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>malicious page</title>
</head>
<body>
    <script>
	if ( window.opener ) {
             opener.location = 'http://hacker.com/malicious.html';
	   }
    </script>
</body>
</html>

 

راه حل چیست؟ راحترین روش حل این مشکل امنیتی افزودن ویژگی rel=noopener به لینک هایی است که در صفحه یا تب جدید باز می شوند، اینکار مانع از بازگشت صفحه جدید(مقصد) برای کنترل صفحه اولیه(مبداء) خواهد شد.

<a href="https://example.com" target="_blank" rel="noopener">Anchor Text</a>

 

لینک noopener و وردپرس

وردپرس از نسخه ۴٫۷٫۴ متوجه این مشکل امنیتی شد و برای آن راه حلی در نظر گرفت، بدین صورت که در هنگام افزودن یک پیوند(چه داخلی چه خارجی) اگر گزینه “باز کردن پیوند در زبانه تازه” را انتخاب کنید به صورت خودکار ویژگی rel=noreferrer noopener به آن لینک افزوده خواهد شد.

لینک noreferrer در وردپرس

 

یعنی پس از انتشار پست(نوشته) یا برگه تگ a به صورت زیر تولید می شود.

<a href="https://example.com" target="_blank" rel="noreferrer noopener">Anchor Text</a>

 

اما یک مشکل اساسی وجود دارد، وردپرس همچنان ویژگی noreferrer را به لینک های داخلی که در یک صفحه جدید باز می شوند اضافه می کند، اینکار باعث خواهد شد که گزارش های Direct و Rerferrals گوگل آنالیتیکس از دقت بالایی برخوردار نباشد.

برای رفع این مشکل می توانید کدهای زیر در فایل functions.php قرار دهید، از این پس فقط ویژگی noopener به لینک هایی که در تب جدید باز می شوند افزوده خواهد شد.

add_filter( 'wp_targeted_link_rel' , function () {
    return;
} );

 

آیا لینک noopener بر روی سئو تاثیرگذار است؟

لینک noopener هیچگونه تاثیری بر روی سئو ندارد و می توانید با خیال راحت برای ارتقاء امنیت وب سایت تان استفاده کنید.

جمع بندی

همانطور که ملاحظه کردید یک پیوند می تواند nofollow، noreferrer، noopener یا ترکیبی از موارد فوق باشد که هر کدام مفهوم خاصی را به موتورهای جستجو و مرورگر وب منتقل می کنند. با این حال اگر از وردپرس استفاده نمی کنید و یک سیستم اختصاصی دارید بسیار مهم است که ساختار لینک ها را به درستی پیاده سازی کنید و مهمتر آنکه مطمئن شوید کلیه پیوندهای خارجی وب سایت تان ویژگی rel=noopener را دارند.

نظرات و سوالات کاربران

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *