Defaults.Exposed › رفع اشکالها › Referrer-Policy
چطور Referrer-Policy را رفع کنید
Referrer-Policy یک دستورالعمل یکخطی است که وبسایت شما به مرورگر هر بازدیدکننده میدهد و کنترل میکند وقتی روی یک لینک به سایت دیگری کلیک میکنند چه مقدار از آدرس وب صفحهی شما همراهشان میرود. بدون آن، آدرس کامل صفحهای که روی آن بودند — عبارتهای جستجو، شمارهی حساب، لینکهای بازنشانی، مسیرهای صفحات داخلی و همه چیز — بهآرامی به سایت بعدی که میرسند، از جمله تبلیغدهندگان، شرکتهای analytics، و هر جایی که لینک نشان میدهد، داده میشود.
نتیجه نهایی برای کسبوکار شما: هر بار که بازدیدکننده روی یک لینک خروجی، تبلیغ، یا منبع مشترک کلیک میکند، مرورگرشان میتواند آدرس کامل صفحهی شما را به مقصد بدهد — و اگر آدرسهای شما عبارتهای جستجو، شناسهی مشتری، شمارهی سفارش، یا لینکهای یکبار مصرف داشته باشند، دارید دادههای مشتریان را به اشخاص ثالثی که شما کنترلی ندارید نشت میدهید. این یک مشکل حفاظت از داده است که نظارتکنندگان جدی میگیرند، یک قول حریم خصوصی که بهآرامی شکسته میشود، و یک شکاف نمرهدار که تیم امنیتی مشتری در بررسی دقیق پیدا میکند.
هزینه این برای شما
- یک مشتری یک فرم پر میکند یا یک جستجو انجام میدهد، سپس روی یک لینک خروجی یا تبلیغ کلیک میکند — و آدرس صفحه، همراه با آنچه تایپ کرده، مستقیماً به یک تبلیغدهنده یا شرکت analytics داده میشود که هرگز قصد نداشتید آن را با آنها به اشتراک بگذارید.
- لینکهای بازنشانی رمز عبور و تأیید حساب گاهی یک توکن مخفی در آدرس وب دارند؛ بدون این header، کلیک روی هر لینکی روی آن صفحه میتواند آدرس کامل — از جمله توکن — را به یک سایت خارجی بدهد.
- مسیرهای صفحات داخلی خصوصی (مناطق ادمین، صفحات مخصوص مشتری، ردیفهای قیمتگذاری، لینکهای اسناد) به هر شخص ثالثی که بازدیدکنندگانتان از طریق آن کلیک میکنند فاش میشود و به رقبا و جاسوسان نقشهای از سایت شما میدهد که هرگز نباید ببینند.
- یک بررسی امنیتی مشتری یا یک حسابرسی حریم خصوصی سایت شما را اسکن میکند، میبیند هیچ Referrer-Policy وجود ندارد، و آن را به عنوان یک شکست به حداقل رسانی داده ثبت میکند — نوع یافتهای که یک قرارداد یا گواهینامه را متوقف میکند.
- دادههای شخصی به دست پردازندههایی میرسد که هیچ توافقی با آنها ندارید، و یک اشتباه پنج دقیقهای را به یک نقض قابل گزارش حفاظت از داده تبدیل میکند.
چرا اهمیت دارد. مرورگرها، اگر به حال خود رها شوند، پرحرف هستند: به طور پیشفرض به سایت بعدی میگویند بازدیدکننده از کجا آمده، اغلب شامل آدرس کامل صفحه. برای یک سایت بروشور این ممکن است بیخطر باشد، اما به محض اینکه آدرسهایتان چیزی شخصی داشته باشند — یک عبارت جستجو، یک شناسهی سفارش، یک ایمیل در یک لینک، یک مسیر خصوصی — آن پیشفرض بهآرامی آن را به اشخاص خارجی نشت میدهد. یک Referrer-Policy تنظیمی واحد است که به مرورگرها میگوید بیش از حد اشتراکگذاری نکنند. یک بررسی نمرهگذاری شده روی کارنامهی شما با ارزش امتیازهای واقعی است، مستقیماً به وظایف به حداقل رسانی داده تحت قانون حریم خصوصی نقشه میکشد، و یکی از header های امنیتی استاندارد است که هر بررسی حرفهای انتظار پیدا کردنش را دارد.
این چیست، به زبان ساده
هر بار که بازدیدکنندهای روی وبسایت شما روی لینکی به سایت دیگری کلیک میکند — یک لینک خروجی، یک بنر تبلیغاتی، یک ‘به اشتراک گذاشتن’، حتی یک فونت یا تصویر بارگذاری شده از جای دیگر — مرورگرشان بهآرامی یادداشتی میفرستد که میگوید از کدام صفحهی شما آمدند. آن یادداشت referrer نامیده میشود.
مشکل در رفتار پیشفرض است. بدون مدیریت، مرورگر فقط نمیگوید «از your-business.com آمدند» — اغلب آدرس کامل صفحهی دقیق را میدهد، از جمله همه چیز بعد از نام دامنه. و آدرسهای وب خیلی بیشتر از آنچه مردم فکر میکنند حمل میکنند: عبارتهای جستجو تایپ شده در سایت، شمارهی سفارش و حساب، مسیر به یک صفحهی خصوصی مخصوص اعضاء، حتی توکنهای مخفی یکبار مصرف در لینکهای بازنشانی رمز عبور و تأیید.
یک Referrer-Policy یک دستورالعمل تنها است که وبسایت شما به مرورگر میفرستد که میگوید چقدر از آن یادداشت مجاز به اشتراکگذاری است. میتوانید بگویید فقط نام دامنهی شما را به اشتراک بگذارد، فقط به صفحات دیگر سایت خودتان، یا اصلاً هیچ چیز. این یکی از خانوادهی کوچکی از «security header» هاست — دستورالعملهای کوتاهی که سایت شما به مرورگر هر بازدیدکننده میدهد.
این چقدر ممکن است برای شما هزینه داشته باشد
-
جستجوی نشت شده. یک مشتری سایت شما را برای چیزی حساس جستجو میکند و عبارت جستجو در آدرس صفحه قرار میگیرد. سپس روی یک لینک خروجی یا تبلیغ کلیک میکند. تبلیغدهنده اکنون آدرس شما را با عبارت جستجو در آن دریافت میکند. شما هرگز موافقت نکردید که آن را به اشتراک بگذارید.
-
لینک بازنشانی فاش شده. بسیاری از سیستمها یک توکن یکبار مصرف مخفی را در آدرس صفحات بازنشانی رمز عبور، تأیید ایمیل، یا «login جادویی» قرار میدهند. اگر آن صفحه شامل هر لینک خروجی یا منبع شخص ثالث است، آدرس کامل — از جمله توکن — میتواند به یک سایت خارجی داده شود.
-
نقشهی سایتی که رایگان دادید. مسیرهای صفحات داخلی شما اغلب ساختار شما را فاش میکنند: /admin، /enterprise-pricing، /clients/acme. رقبا ردیفهای قیمتگذاری و خطوط محصول شما را یاد میگیرند؛ scrapers یاد میگیرند کدام صفحات را هدف قرار دهند.
-
رابطهی اشتراکگذاری دادهی ناخواسته. قانون حریم خصوصی انتظار دارد بدانید دادههای شخصی مشتریانتان به کجا میرود و توافق داشته باشید. نشت دادن آدرسهای صفحاتی که شامل شناسههای مشتری یا آدرسهای ایمیل هستند به شبکههای تبلیغاتی و شرکتهای analytics — بدون توافق — دقیقاً نوع جریان دادهی کنترلنشدهای است که یک حسابرسی معمولی را به یک نقض قابل گزارش تبدیل میکند.
-
معاملهای که روی بررسی دقیق متوقف میشود. وقتی تیم امنیتی یک مشتری بزرگتر شما را بررسی میکند، header های امنیتی استاندارد گمشده یک تیک سریع و خودکار است.
در واقع چیست
«خوب» چه شکلی است: یک header Referrer-Policy وجود دارد و روی یک مقدار محدودکننده تنظیم شده — برای اکثر کسبوکارها، strict-origin-when-cross-origin.
مقادیری که مهم هستند:
no-referrer— هیچ چیز به اشتراک نگذارید. سایت بعدی هیچ چیزی دربارهی منشأ بازدیدکننده نمیداند. حریم خصوصی حداکثری.same-origin— آدرس کامل را فقط وقتی بازدیدکننده بین صفحات سایت خودتان جابجا میشود به اشتراک بگذارید؛ هیچ چیز با سایتهای خارجی.strict-origin-when-cross-origin— پیشفرض توصیه شده. داخل سایت خودتان، مسیر کامل به اشتراک گذاشته میشود؛ به سایتهای خارجی، فقط نام دامنهی خالی شما. احزاب خارجی یاد میگیرند ترافیک از شما آمده، اما هرگز جزئیات خصوصی بعد از دامنهی شما نه.origin— همیشه فقط نام دامنهی شما را به اشتراک بگذارید، حتی داخل سایت خودتان.
و دو مقداری که باید از آنها اجتناب کنید:
unsafe-url— آدرس کامل را همیشه با همه به اشتراک بگذارید. بدترین حالت.no-referrer-when-downgrade— پیشفرض قدیمی مرورگر؛ همچنان آدرس کامل را به سایتهای امن دیگر میفرستد.
چگونه آن را رفع کنیم (رایگان، حدود ۵ دقیقه)
این بخش را به 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 وجود دارد.
اشتباهات رایج
- تنظیم یک مقدار permissive و فرض اینکه به حساب میآید.
unsafe-urlوno-referrer-when-downgradeهر دو همچنان آدرس کامل را نشت میدهند. کارنامه آنها را صفر میدهد. - تنظیم فقط روی صفحهی اصلی. Header باید روی هر صفحه ارسال شود — نشتها روی صفحات نتایج جستجو، حساب و بازنشانی اتفاق میافتد. آن را در سطح سرور، CDN، یا Cloudflare تنظیم کنید تا به طور خودکار در سراسر سایت اعمال شود.
- تنظیم فقط در تگهای HTML
<meta>. یک تگ<meta name="referrer">برای برخی موارد کار میکند اما نه همه. تنظیم آن به عنوان یک response header مناسب (روشهای بالا) رویکرد قابل اطمینان است. - اجازه دادن به یک لایه برای override کردن دیگری. اگر هم سرور اصلی و هم CDN شما header را با مقادیر مختلف تنظیم کنند، نتیجه میتواند غیرقابل پیشبینی باشد.
- رفتار با آن به عنوان جایگزین نگه داشتن داده از URL ها. Header آسیب را محدود میکند، اما عادت طولانیمدت تمیزتر این است که اسرار و دادههای شخصی را اصلاً در آدرسهای وب قرار ندهید.
پرسشهای متداول
من تکنیکی نیستم — آیا میتوانم خودم با این کنار بیایم؟
بله، و یکی از سادهترین رفعها در کل کارنامه است. یک خط تنها است که توسط هر کسی که وبسایت یا هاستینگ شما را اجرا میکند اضافه میشود، و در سرویسهایی مثل 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' داشته باشید.