Defaults.Exposed

Defaults.Exposedرفع اشکال‌ها › Referrer-Policy

چطور Referrer-Policy را رفع کنید

Referrer-Policy یک دستورالعمل یک‌خطی است که وب‌سایت شما به مرورگر هر بازدیدکننده می‌دهد و کنترل می‌کند وقتی روی یک لینک به سایت دیگری کلیک می‌کنند چه مقدار از آدرس وب صفحه‌ی شما همراهشان می‌رود. بدون آن، آدرس کامل صفحه‌ای که روی آن بودند — عبارت‌های جستجو، شماره‌ی حساب، لینک‌های بازنشانی، مسیرهای صفحات داخلی و همه چیز — به‌آرامی به سایت بعدی که می‌رسند، از جمله تبلیغ‌دهندگان، شرکت‌های analytics، و هر جایی که لینک نشان می‌دهد، داده می‌شود.

نتیجه نهایی برای کسب‌وکار شما: هر بار که بازدیدکننده روی یک لینک خروجی، تبلیغ، یا منبع مشترک کلیک می‌کند، مرورگرشان می‌تواند آدرس کامل صفحه‌ی شما را به مقصد بدهد — و اگر آدرس‌های شما عبارت‌های جستجو، شناسه‌ی مشتری، شماره‌ی سفارش، یا لینک‌های یکبار مصرف داشته باشند، دارید داده‌های مشتریان را به اشخاص ثالثی که شما کنترلی ندارید نشت می‌دهید. این یک مشکل حفاظت از داده است که نظارت‌کنندگان جدی می‌گیرند، یک قول حریم خصوصی که به‌آرامی شکسته می‌شود، و یک شکاف نمره‌دار که تیم امنیتی مشتری در بررسی دقیق پیدا می‌کند.

هزینه این برای شما

چرا اهمیت دارد. مرورگرها، اگر به حال خود رها شوند، پرحرف هستند: به طور پیش‌فرض به سایت بعدی می‌گویند بازدیدکننده از کجا آمده، اغلب شامل آدرس کامل صفحه. برای یک سایت بروشور این ممکن است بی‌خطر باشد، اما به محض اینکه آدرس‌هایتان چیزی شخصی داشته باشند — یک عبارت جستجو، یک شناسه‌ی سفارش، یک ایمیل در یک لینک، یک مسیر خصوصی — آن پیش‌فرض به‌آرامی آن را به اشخاص خارجی نشت می‌دهد. یک Referrer-Policy تنظیمی واحد است که به مرورگرها می‌گوید بیش از حد اشتراک‌گذاری نکنند. یک بررسی نمره‌گذاری شده روی کارنامه‌ی شما با ارزش امتیازهای واقعی است، مستقیماً به وظایف به حداقل رسانی داده تحت قانون حریم خصوصی نقشه می‌کشد، و یکی از header های امنیتی استاندارد است که هر بررسی حرفه‌ای انتظار پیدا کردنش را دارد.

این چیست، به زبان ساده

هر بار که بازدیدکننده‌ای روی وب‌سایت شما روی لینکی به سایت دیگری کلیک می‌کند — یک لینک خروجی، یک بنر تبلیغاتی، یک ‘به اشتراک گذاشتن’، حتی یک فونت یا تصویر بارگذاری شده از جای دیگر — مرورگرشان به‌آرامی یادداشتی می‌فرستد که می‌گوید از کدام صفحه‌ی شما آمدند. آن یادداشت referrer نامیده می‌شود.

مشکل در رفتار پیش‌فرض است. بدون مدیریت، مرورگر فقط نمی‌گوید «از your-business.com آمدند» — اغلب آدرس کامل صفحه‌ی دقیق را می‌دهد، از جمله همه چیز بعد از نام دامنه. و آدرس‌های وب خیلی بیشتر از آنچه مردم فکر می‌کنند حمل می‌کنند: عبارت‌های جستجو تایپ شده در سایت، شماره‌ی سفارش و حساب، مسیر به یک صفحه‌ی خصوصی مخصوص اعضاء، حتی توکن‌های مخفی یکبار مصرف در لینک‌های بازنشانی رمز عبور و تأیید.

یک Referrer-Policy یک دستورالعمل تنها است که وب‌سایت شما به مرورگر می‌فرستد که می‌گوید چقدر از آن یادداشت مجاز به اشتراک‌گذاری است. می‌توانید بگویید فقط نام دامنه‌ی شما را به اشتراک بگذارد، فقط به صفحات دیگر سایت خودتان، یا اصلاً هیچ چیز. این یکی از خانواده‌ی کوچکی از «security header» هاست — دستورالعمل‌های کوتاهی که سایت شما به مرورگر هر بازدیدکننده می‌دهد.

این چقدر ممکن است برای شما هزینه داشته باشد

در واقع چیست

«خوب» چه شکلی است: یک header Referrer-Policy وجود دارد و روی یک مقدار محدودکننده تنظیم شده — برای اکثر کسب‌وکارها، strict-origin-when-cross-origin.

مقادیری که مهم هستند:

و دو مقداری که باید از آن‌ها اجتناب کنید:

چگونه آن را رفع کنیم (رایگان، حدود ۵ دقیقه)

این بخش را به IT یا پشتیبانی هاستینگ خود بدهید — رفع رایگان است و چیزی روی سایت شما نمی‌شکند.

هدف: یک header پاسخ Referrer-Policy با مقدار strict-origin-when-cross-origin (یا یک مقدار سختگیرانه‌تر) تنظیم کنید.

Cloudflare (بدون کد — ساده‌ترین اگر از آن استفاده می‌کنید): Dashboard → دامنه‌ی شما → Rules → Transform Rules → Modify Response Header → Create rule → Set static → نام header Referrer-Policy، مقدار strict-origin-when-cross-origin → اعمال روی همه‌ی درخواست‌های ورودی → Deploy.

Nginx:

add_header Referrer-Policy "strict-origin-when-cross-origin" always;

Apache (در config سایت یا .htaccess):

Header always set Referrer-Policy "strict-origin-when-cross-origin"

IIS (web.config):

<httpProtocol><customHeaders>
  <add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
</customHeaders></httpProtocol>

Node / Express:

app.use((req, res, next) => { res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin'); next(); });

بعد از اعمال: سایت خود را بارگذاری کنید و بررسی را مجدداً اجرا کنید، یا از ابزارهای توسعه‌دهنده مرورگر خود استفاده کنید (تب Network → کلیک روی سند اصلی → Response Headers) تا تأیید کنید Referrer-Policy: strict-origin-when-cross-origin وجود دارد.

اشتباهات رایج

پرسش‌های متداول

من تکنیکی نیستم — آیا می‌توانم خودم با این کنار بیایم؟

بله، و یکی از ساده‌ترین رفع‌ها در کل کارنامه است. یک خط تنها است که توسط هر کسی که وب‌سایت یا هاستینگ شما را اجرا می‌کند اضافه می‌شود، و در سرویس‌هایی مثل Cloudflare چند کلیک بدون هیچ کدی است. بخش 'چگونه آن را رفع کنیم' را به آن‌ها بدهید. رایگان است، حدود پنج دقیقه طول می‌کشد، و بر خلاف برخی تنظیمات امنیتی چیزی روی سایت شما نمی‌شکند.

اصلاً 'referrer' به چه معناست؟

وقتی کسی روی یک لینک از صفحه‌ی شما به سایت دیگری کلیک می‌کند، مرورگرشان یک یادداشت می‌فرستد که می‌گوید از کدام صفحه آمدند — آن یادداشت referrer نامیده می‌شود. برای analytics صادقانه مفید است. مشکل در رفتار پیش‌فرض است. بدون مدیریت، مرورگر فقط نمی‌گوید 'از your-business.com آمدند' — اغلب **آدرس کامل صفحه‌ی دقیق** را می‌دهد، از جمله همه چیز بعد از نام دامنه. یک Referrer-Policy به شما اجازه می‌دهد یادداشت را فقط به نام دامنه‌ی خود کوتاه کنید، یا آن را خاموش کنید، پس هیچ چیز حساسی نشت نمی‌کند.

آیا واقعاً ارزش دارد اگر سایت من پرداختی انجام نمی‌دهد؟

تقریباً حتماً بله. برای داشتن اطلاعات خصوصی در آدرس‌های وب نیازی به checkout ندارید — کادرهای جستجو، فرم‌های تماس، صفحات حساب، لینک‌های اسناد، و ایمیل‌های بازنشانی رمز عبور همه به طور معمول داده را در نوار آدرس قرار می‌دهند. و حتی بدون هیچ داده شخصی، نشت دادن مسیرهای صفحات داخلی به هر سایت خارجی که بازدیدکنندگانتان از طریق آن کلیک می‌کنند به رقبا و scrapers نقشه‌ی رایگان از سایت شما می‌دهد. رفع هزینه‌ای ندارد و پنج دقیقه طول می‌کشد.

آیا روشن کردن این می‌تواند سایت یا analytics من را بشکند؟

نه. این یکی از header های امن است — فقط کنترل می‌کند چقدر جزئیات آدرس با سایت‌های دیگر به اشتراک گذاشته می‌شود، نه اینکه آیا لینک‌ها کار می‌کنند. تنظیم توصیه شده همچنان نام دامنه‌ی شما را به سایت‌های خارجی ارسال می‌کند، پس analytics ارجاع مشروع کار می‌کند؛ فقط آدرس خصوصی کامل را از همراهی با آن باز می‌دارد.

آیا این یک مسئله‌ی قانون حریم خصوصی است یا فقط چیز خوبی است که داشته باشیم؟

می‌تواند یک مسئله‌ی واقعی انطباق باشد. قوانین حفاظت از داده از شما می‌خواهند فقط حداقل داده شخصی لازم را جمع‌آوری و اشتراک‌گذاری کنید، و بدانید داده‌هایتان به کجا می‌رود. اگر آدرس‌هایتان شناسه‌های شخصی دارند و آن‌ها را بدون توافق به تبلیغ‌دهندگان یا شرکت‌های analytics نشت می‌دهید، یک شکست به حداقل رسانی داده است که حسابرسان و نظارت‌کنندگان تشخیص می‌دهند.

آیا این نمره‌ی ما را تغییر می‌دهد، یا فقط مشاوره است؟

نمره را تغییر می‌دهد. بررسی Referrer-Policy نمره‌گذاری شده است و تا ۱۵ امتیاز در دسته‌ی Web Security ارزش دارد. یک header گمشده با شدت متوسط نشانه‌گذاری می‌شود. توجه کنید: تنظیم header روی یک مقدار permissive مثل 'unsafe-url' یا 'no-referrer-when-downgrade' صفر امتیاز می‌گیرد — همان داشتن هیچ header — چون آن مقادیر همچنان آدرس کامل را نشت می‌دهند. برای کسب امتیاز باید یک مقدار محدودکننده مثل 'strict-origin-when-cross-origin' داشته باشید.