این صفحه برخی از بهترین شیوهها برای تنظیم سیاست ارجاع و استفاده از ارجاعدهنده در درخواستهای دریافتی را شرح میدهد.
خلاصه
- نشت غیرمنتظره اطلاعات بین مبداها به حریم خصوصی کاربران وب آسیب میرساند. یک سیاست ارجاع محافظتشده میتواند کمک کند.
- تنظیم سیاست ارجاع با عبارت
strict-origin-when-cross-originرا در نظر بگیرید. این کار بیشترین کاربرد ارجاع را حفظ میکند، در حالی که خطر نشت دادهها بین مبداها را کاهش میدهد. - از ارجاعدهندهها برای محافظت در برابر جعل درخواست بینسایتی (CSRF) استفاده نکنید. در عوض از توکنهای CSRF و سایر هدرها به عنوان یک لایه امنیتی اضافی استفاده کنید.
ارجاع و ارجاع - سیاست 101
درخواستهای HTTP میتوانند شامل یک سربرگ Referer اختیاری باشند که نشان دهندهی مبدا یا URL صفحهی وبی است که درخواست از آن ارسال شده است. سربرگ Referrer-Policy مشخص میکند که چه دادههایی در سربرگ Referer در دسترس قرار میگیرند.
در مثال زیر، هدر Referer شامل آدرس کامل صفحهای در site-one است که درخواست از آن ارسال شده است.

هدر Referer ممکن است در انواع مختلف درخواستها وجود داشته باشد:
- درخواستهای ناوبری، زمانی که کاربر روی یک لینک کلیک میکند.
- درخواستهای زیرمنبع، زمانی که مرورگر تصاویر، آیفریمها، اسکریپتها و سایر منابع مورد نیاز یک صفحه را درخواست میکند.
برای پیمایشها و iframeها، میتوانید با استفاده از document.referrer به این دادهها با جاوا اسکریپت نیز دسترسی داشته باشید.
شما میتوانید چیزهای زیادی از مقادیر Referer یاد بگیرید. برای مثال، یک سرویس تحلیلی ممکن است از آنها برای تعیین اینکه ۵۰٪ از بازدیدکنندگان site-two.example از social-network.example آمدهاند، استفاده کند. اما وقتی URL کامل، شامل مسیر و رشته پرس و جو، در Referer از طریق origins ارسال شود، میتواند حریم خصوصی کاربر را به خطر بیندازد و خطرات امنیتی ایجاد کند:

آدرسهای اینترنتی شماره ۱ تا ۵ حاوی اطلاعات خصوصی و گاهی اوقات اطلاعات حساس یا هویتی هستند. نشت بیسروصدای این اطلاعات در سراسر مبدأ میتواند حریم خصوصی کاربران وب را به خطر بیندازد.
آدرس اینترنتی شماره ۶ یک آدرس اینترنتی با قابلیت است. اگر کسی غیر از کاربر مورد نظر این آدرس را دریافت کند، یک عامل مخرب میتواند کنترل حساب کاربری این کاربر را به دست گیرد.
برای محدود کردن اینکه چه دادههای ارجاعدهندهای برای درخواستهای سایت شما در دسترس قرار میگیرد، میتوانید یک سیاست ارجاعدهنده تنظیم کنید.
چه سیاستهایی در دسترس هستند و چه تفاوتی با هم دارند؟
شما میتوانید یکی از هشت سیاست را انتخاب کنید. بسته به سیاست، دادههای موجود از سربرگ Referer (و document.referrer ) میتوانند موارد زیر باشند:
- دادهای وجود ندارد (هدر
Refererموجود نیست) - فقط مبدا
- آدرس کامل URL: مبدا، مسیر و رشته پرسوجو

برخی از سیاستها به گونهای طراحی شدهاند که بسته به زمینه، رفتار متفاوتی داشته باشند: درخواست با مبداء متقابل یا با مبداء یکسان، اینکه آیا مقصد درخواست به اندازه مبداء امن است یا هر دو. این برای محدود کردن میزان اطلاعات به اشتراک گذاشته شده در مبداءها یا به مبداءهای با امنیت کمتر، در عین حفظ غنای ارجاعدهنده در سایت خودتان، مفید است.
جدول زیر نشان میدهد که چگونه سیاستهای ارجاع، دادههای URL موجود در سربرگ Referrer و document.referrer را محدود میکنند:
| دامنه سیاست | نام سیاست | ارجاعدهنده: دادهای موجود نیست | ارجاع دهنده: فقط مبدا | ارجاعدهنده: آدرس کامل اینترنتی |
|---|---|---|---|---|
| زمینه درخواست را در نظر نمیگیرد | no-referrer | چک | ||
origin | چک | |||
unsafe-url | چک | |||
| متمرکز بر امنیت | strict-origin | درخواست از HTTPS به HTTP | درخواست از HTTPS به HTTPS یا HTTP به HTTP | |
no-referrer-when-downgrade | درخواست از HTTPS به HTTP | درخواست از HTTPS به HTTPS یا HTTP به HTTP | ||
| متمرکز بر حریم خصوصی | origin-when-cross-origin | درخواست بین مبدائی | درخواست هممبدأ | |
same-origin | درخواست بین مبدائی | درخواست هممبدأ | ||
| حریم خصوصی و امنیت متمرکز | strict-origin-when-cross-origin | درخواست از HTTPS به HTTP | درخواست بین مبدائی از HTTPS به HTTPS یا HTTP به HTTP | درخواست هممبدأ |
MDN لیست کاملی از سیاستها و نمونههای رفتاری را ارائه میدهد.
در اینجا نکاتی وجود دارد که باید هنگام تنظیم سیاست ارجاع از آنها آگاه باشید:
- تمام سیاستهایی که این طرح (HTTPS در مقابل HTTP) را در نظر میگیرند (
strict-origin،no-referrer-when-downgradeوstrict-origin-when-cross-origin) با درخواستهای یک مبدأ HTTP به مبدأ HTTP دیگر مانند درخواستهای یک مبدأ HTTPS به مبدأ HTTPS دیگر رفتار میکنند، حتی اگر HTTP امنیت کمتری داشته باشد. دلیل این امر این است که برای این سیاستها، آنچه مهم است این است که آیا کاهش امنیت رخ میدهد یا خیر؛ یعنی اینکه آیا درخواست میتواند دادهها را از یک مبدأ رمزگذاری شده به یک مبدأ رمزگذاری نشده افشا کند، مانند درخواستهای HTTPS → HTTP. یک درخواست HTTP → HTTP کاملاً رمزگذاری نشده است، بنابراین هیچ کاهش امنیتی وجود ندارد. - اگر یک درخواست از نوع same-origin باشد، به این معنی است که طرح (HTTPS یا HTTP) یکسان است، بنابراین هیچ کاهش امنیتی وجود ندارد.
سیاستهای پیشفرض ارجاع در مرورگرها
از اکتبر ۲۰۲۱
اگر هیچ سیاست ارجاعی تنظیم نشده باشد، مرورگر از سیاست پیشفرض خود استفاده میکند.
| مرورگر | Referrer-Policy |
|---|---|
| کروم | مقدار پیشفرض strict-origin-when-cross-origin است. |
| فایرفاکس | مقدار پیشفرض strict-origin-when-cross-origin است.از نسخه ۹۳ به بعد، برای کاربرانی که از محافظت دقیق در برابر ردیابی و مرور خصوصی استفاده میکنند، سیاستهای ارجاعدهنده با محدودیت کمتر no-referrer-when-downgrade ، origin-when-cross-origin و unsafe-url برای درخواستهای بینسایتی نادیده گرفته میشوند، به این معنی که ارجاعدهنده همیشه برای درخواستهای بینسایتی، صرف نظر از سیاست وبسایت، کوتاه میشود. |
| لبه | مقدار پیشفرض strict-origin-when-cross-origin است. |
| سافاری | مقدار پیشفرض مشابه strict-origin-when-cross-origin است، با برخی تفاوتهای خاص. برای جزئیات بیشتر به بخش جلوگیری از ردیابی و جلوگیری از ردیابی مراجعه کنید. |
بهترین شیوهها برای تنظیم سیاست ارجاع
روشهای مختلفی برای تنظیم سیاستهای ارجاع برای سایت شما وجود دارد:
- به عنوان یک هدر HTTP
- درون HTML شما
- از جاوا اسکریپت بر اساس هر درخواست
شما میتوانید برای صفحات، درخواستها یا عناصر مختلف، سیاستهای متفاوتی تنظیم کنید.
هدر HTTP و عنصر متا هر دو در سطح صفحه هستند. ترتیب اولویت برای تعیین سیاست مؤثر یک عنصر به شرح زیر است:
- سیاست سطح عنصر
- سیاست سطح صفحه
- پیشفرض مرورگر
مثال:
index.html :
<meta name="referrer" content="strict-origin-when-cross-origin" />
<img src="..." referrerpolicy="no-referrer-when-downgrade" />
این تصویر با سیاست no-referrer-when-downgrade درخواست شده است، و تمام درخواستهای زیرمنبع دیگر از این صفحه از سیاست strict-origin-when-cross-origin پیروی میکنند.
چگونه میتوان سیاست ارجاع را مشاهده کرد؟
securityheaders.com برای تعیین اینکه یک سایت یا صفحه خاص از چه سیاستی استفاده میکند، مفید است.
همچنین میتوانید از ابزارهای توسعهدهندگان در کروم، اج یا فایرفاکس برای مشاهدهی سیاست ارجاع مورد استفاده برای یک درخواست خاص استفاده کنید. در زمان نگارش این مطلب، سافاری عنوان Referrer-Policy را نشان نمیدهد، اما Referer که ارسال شده است را نشان میدهد.

چه سیاستی را باید برای وبسایت خود تعیین کنید؟
ما اکیداً توصیه میکنیم که صریحاً یک سیاست افزایش حریم خصوصی مانند strict-origin-when-cross-origin (یا سختگیرانهتر) تنظیم کنید.
چرا «صراحتاً»؟
اگر سیاست ارجاع را تنظیم نکنید، از سیاست پیشفرض مرورگر استفاده خواهد شد—در واقع، وبسایتها اغلب از پیشفرض مرورگر پیروی میکنند. اما این ایدهآل نیست، زیرا:
- مرورگرهای مختلف سیاستهای پیشفرض متفاوتی دارند، بنابراین اگر به پیشفرضهای مرورگر تکیه کنید، سایت شما در مرورگرهای مختلف به طور قابل پیشبینی رفتار نخواهد کرد.
- مرورگرها در حال اتخاذ پیشفرضهای سختگیرانهتری مانند
strict-origin-when-cross-originو مکانیسمهایی مانند referrer trimming برای درخواستهای بین مبدایی هستند. انتخاب صریح یک سیاست افزایش حریم خصوصی قبل از تغییر پیشفرضهای مرورگر، به شما کنترل میدهد و به شما کمک میکند تا آزمایشها را آنطور که صلاح میدانید اجرا کنید.
چرا strict-origin-when-cross-origin )؟
شما به سیاستی نیاز دارید که امن، حافظ حریم خصوصی و مفید باشد. معنای «مفید» بستگی به این دارد که از معرف چه میخواهید:
- ایمن : اگر وبسایت شما از HTTPS استفاده میکند ( اگر نه، آن را در اولویت قرار دهید )، شما نمیخواهید URLهای وبسایت شما در درخواستهای غیر HTTPS نشت کنند. از آنجایی که هر کسی در شبکه میتواند این موارد را ببیند، نشتها کاربران شما را در معرض حملات شخص در وسط قرار میدهند. سیاستهای
no-referrer-when-downgrade،strict-origin-when-cross-origin،no-referrerوstrict-originاین مشکل را حل میکنند. - افزایش حریم خصوصی : برای یک درخواست cross-origin،
no-referrer-when-downgradeآدرس کامل URL را به اشتراک میگذارد که میتواند باعث ایجاد مشکلات حریم خصوصی شود.strict-origin-when-cross-originوstrict-originفقط مبدا را به اشتراک میگذارند وno-referrerهیچ چیزی را به اشتراک نمیگذارد. این به شما گزینههایstrict-origin-when-cross-origin،strict-originوno-referrerبه عنوان گزینههای افزایش حریم خصوصی میدهد. - مفید :
no-referrerوstrict-originهرگز URL کامل را به اشتراک نمیگذارند، حتی برای درخواستهای same-origin. اگر به URL کامل نیاز دارید،strict-origin-when-cross-originگزینه بهتری است.
همه اینها به این معنی است که strict-origin-when-cross-origin عموماً یک انتخاب معقول است.
مثال: تنظیم سیاست strict-origin-when-cross-origin
index.html :
<meta name="referrer" content="strict-origin-when-cross-origin" />
یا سمت سرور، مثلاً در اکسپرس:
const helmet = require('helmet');
app.use(helmet.referrerPolicy({policy: 'strict-origin-when-cross-origin'}));
اگر strict-origin-when-cross-origin (یا stricter) با همه موارد استفاده شما سازگار نباشد، چه میشود؟
در این مورد، یک رویکرد مترقی اتخاذ کنید: یک سیاست محافظتی مانند strict-origin-when-cross-origin برای وبسایت خود تنظیم کنید و در صورت نیاز، یک سیاست آسانگیرانهتر برای درخواستهای خاص یا عناصر HTML وضع کنید.
مثال: سیاست سطح عنصر
index.html :
<head>
<!-- document-level policy: strict-origin-when-cross-origin -->
<meta name="referrer" content="strict-origin-when-cross-origin" />
<head>
<body>
<!-- policy on this <a> element: no-referrer-when-downgrade -->
<a src="…" href="…" referrerpolicy="no-referrer-when-downgrade"></a>
<body></body>
</body>
</head>
</head>
سافاری/وبکیت ممکن است document.referrer یا سربرگ Referer را برای درخواستهای بینسایتی محدود کند. جزئیات را ببینید.
مثال: سیاست سطح درخواست
script.js :
fetch(url, {referrerPolicy: 'no-referrer-when-downgrade'});
چه چیز دیگری را باید در نظر بگیرید؟
سیاست شما باید به وبسایت و موارد استفاده شما بستگی داشته باشد، همانطور که توسط شما، تیم شما و شرکت شما تعیین میشود. اگر برخی از URLها حاوی دادههای شناسایی یا حساس هستند، یک سیاست محافظتی تنظیم کنید.
بهترین شیوهها برای درخواستهای ورودی
در اینجا چند دستورالعمل برای انجام کاری که باید انجام دهید در صورتی که سایت شما از URL ارجاع دهنده درخواستهای ورودی استفاده میکند، آورده شده است.
محافظت از دادههای کاربران
Referer میتواند حاوی دادههای خصوصی، شخصی یا هویتی باشد، بنابراین مطمئن شوید که با آن به همین صورت رفتار میکنید.
ارجاعدهندگان ورودی میتوانند تغییر کنند {referer-can-change}
استفاده از ارجاعدهنده از درخواستهای ورودی بین مبدائی چند محدودیت دارد:
- اگر هیچ کنترلی بر پیادهسازی فرستندهی درخواست ندارید، نمیتوانید در مورد هدر
Referer(وdocument.referrer) دریافتی خود فرضیهای داشته باشید. فرستندهی درخواست ممکن است در هر زمانی تصمیم بگیرد که به سیاستno-referrerیا به طور کلیتر به سیاستی سختگیرانهتر از آنچه قبلاً استفاده میکرد، تغییر کند. این بدان معناست که شما دادههای کمتری نسبت به قبل ازRefererدریافت میکنید. - مرورگرها به طور فزایندهای به طور پیشفرض از Referrer-Policy
strict-origin-when-cross-originاستفاده میکنند. این بدان معناست که اگر سایت فرستنده هیچ سیاستی تنظیم نکرده باشد، اکنون ممکن است در درخواستهای ورودی cross-origin، به جای URL کامل ارجاعدهنده، فقط مبدا را دریافت کنید. - مرورگرها ممکن است نحوه مدیریت
Refererتغییر دهند. برای مثال، برخی از توسعهدهندگان مرورگر ممکن است تصمیم بگیرند که همیشه ارجاعدهندهها را در درخواستهای زیرمنبع بینمنبعی، به مبداها برش دهند تا از حریم خصوصی کاربر محافظت شود. - هدر
Referer(وdocument.referrer) ممکن است حاوی دادههای بیشتری از آنچه نیاز دارید باشد. برای مثال، ممکن است یک URL کامل داشته باشد، زمانی که فقط میخواهید بدانید که آیا درخواست از نوع cross-origin است یا خیر.
جایگزینهایی برای Referer
اگر موارد زیر را دارید، ممکن است لازم باشد گزینههای دیگری را در نظر بگیرید:
- یکی از ویژگیهای اساسی سایت شما، استفاده از URL ارجاعدهندهی درخواستهای ورودی بینمرجعی است.
- سایت شما دیگر بخشی از URL ارجاعدهنده مورد نیاز خود را در یک درخواست بینمرجعی دریافت نمیکند. این اتفاق زمانی میافتد که فرستنده درخواست، خطمشی خود را تغییر دهد یا زمانی که هیچ خطمشی تنظیم نکرده باشد و خطمشی پیشفرض مرورگر تغییر کرده باشد (مانند کروم ۸۵ ).
برای تعریف جایگزینها، ابتدا بررسی کنید که از کدام بخش ارجاعدهنده استفاده میکنید.
اگر فقط به منبع نیاز دارید
- اگر از ارجاعدهنده در اسکریپتی استفاده میکنید که دسترسی سطح بالا به صفحه دارد،
window.location.originیک جایگزین است. - در صورت وجود، هدرهایی مانند
OriginوSec-Fetch-SiteOriginبه شما میدهند یا توضیح میدهند که آیا درخواست از نوع cross-origin است یا خیر، که ممکن است دقیقاً همان چیزی باشد که شما نیاز دارید.
اگر به عناصر دیگری از URL نیاز دارید (مسیر، پارامترهای پرس و جو ...)
- پارامترهای درخواست ممکن است مورد استفاده شما را برطرف کنند، که باعث صرفهجویی در کار تجزیه ارجاعدهنده میشود.
- اگر از ارجاعدهنده در اسکریپتی استفاده میکنید که دسترسی سطح بالا به صفحه دارد،
window.location.pathnameمیتواند به عنوان یک جایگزین عمل کند. فقط بخش مسیر URL را استخراج کرده و آن را به عنوان یک آرگومان ارسال میکند، بنابراین هرگونه اطلاعات بالقوه حساس در پارامترهای URL ارسال نمیشود.
اگر نمیتوانید از این جایگزینها استفاده کنید:
- بررسی کنید که آیا میتوانید سیستمهای خود را طوری تغییر دهید که انتظار داشته باشند فرستنده درخواست (برای مثال،
site-one.example) به صراحت اطلاعات مورد نیاز شما را در نوعی پیکربندی تنظیم کند.- مزایا: صریحتر، حفظ حریم خصوصی بیشتر برای کاربران
site-one.example، مقاومتر در برابر آینده. - معایب: به طور بالقوه کار بیشتری از طرف شما یا برای کاربران سیستم شما انجام میشود.
- مزایا: صریحتر، حفظ حریم خصوصی بیشتر برای کاربران
- بررسی کنید که آیا سایتی که درخواستها را ارسال میکند، ممکن است با تنظیم سیاست ارجاع به ازای هر عنصر یا به ازای هر درخواست به صورت
no-referrer-when-downgradeموافقت کند یا خیر.- معایب: احتمالاً حفظ حریم خصوصی کمتری برای کاربران
site-one.exampleدارد، احتمالاً در همه مرورگرها پشتیبانی نمیشود.
- معایب: احتمالاً حفظ حریم خصوصی کمتری برای کاربران
محافظت در برابر جعل درخواست بین سایتی (CSRF)
یک فرستنده درخواست همیشه میتواند با تنظیم سیاست no-referrer ، تصمیم به عدم ارسال ارجاعدهنده بگیرد و یک عامل مخرب حتی میتواند ارجاعدهنده را جعل کند.
از توکنهای CSRF به عنوان محافظت اصلی خود استفاده کنید. برای محافظت بیشتر، از SameSite استفاده کنید و به جای Referer ، از هدرهایی مانند Origin (موجود در درخواستهای POST و CORS) و Sec-Fetch-Site در صورت موجود بودن استفاده کنید.
ثبت و اشکالزدایی
مطمئن شوید که از دادههای شخصی یا حساس کاربران که ممکن است در Referer باشند، محافظت میکنید.
اگر فقط از origin استفاده میکنید، بررسی کنید که آیا میتوانید از هدر Origin به عنوان جایگزین استفاده کنید یا خیر. این کار ممکن است اطلاعات مورد نیاز برای اشکالزدایی را به روشی سادهتر و بدون نیاز به تجزیه ارجاعدهنده در اختیار شما قرار دهد.
پرداختها
ارائه دهندگان پرداخت ممکن است برای بررسیهای امنیتی به سربرگ Referer درخواستهای دریافتی تکیه کنند.
برای مثال:
- کاربر روی دکمه خرید در
online-shop.example/cart/checkoutکلیک میکند. -
online-shop.exampleبرای مدیریت تراکنش بهpayment-provider.exampleهدایت میشود. -
payment-provider.exampleRefererاین درخواست را با لیستی از مقادیر مجازRefererکه توسط فروشندگان تنظیم شده است، مقایسه میکند. اگر با هیچ یک از ورودیهای لیست مطابقت نداشته باشد،payment-provider.exampleدرخواست را رد میکند. اگر مطابقت داشته باشد، کاربر میتواند به تراکنش ادامه دهد.
بهترین شیوهها برای بررسیهای امنیتی جریان پرداخت
به عنوان یک ارائه دهنده خدمات پرداخت، میتوانید از Referer به عنوان یک بررسی اولیه در برابر برخی حملات استفاده کنید. با این حال، هدر Referer به خودی خود مبنای قابل اعتمادی برای بررسی نیست. سایت درخواست کننده، چه یک تاجر قانونی باشد چه نباشد، میتواند سیاست no-referrer را تنظیم کند که اطلاعات Referer را برای ارائه دهنده خدمات پرداخت غیرقابل دسترس کند.
بررسی Referer میتواند به ارائهدهندگان خدمات پرداخت کمک کند تا مهاجمان سادهلوحی را که سیاست no-referrer تنظیم نکردهاند، شناسایی کنند. اگر از Referer به عنوان اولین بررسی استفاده میکنید:
- انتظار نداشته باشید که
Refererهمیشه وجود داشته باشد. اگر وجود دارد، آن را فقط با حداقل دادههایی که میتواند شامل شود، که همان origin است، بررسی کنید.- هنگام تنظیم لیست مقادیر مجاز
Referer، مطمئن شوید که فقط مبدا را وارد میکنید و هیچ مسیری را وارد نمیکنید. - برای مثال، مقادیر مجاز
Refererبرایonline-shop.exampleبایدonline-shop.exampleباشد، نهonline-shop.example/cart/checkout. با انتظار نداشتن هیچRefererیا مقدارRefererکه فقط منبع سایت درخواستکننده است، از خطاهایی که ممکن است از فرض کردن در موردReferrer-Policyفروشنده ناشی شود، جلوگیری میکنید.
- هنگام تنظیم لیست مقادیر مجاز
- اگر
Refererوجود ندارد، یا اگر وجود دارد و بررسی اولیهRefererشما موفقیتآمیز است، میتوانید به سراغ روش تأیید دیگری که مطمئنتر است بروید.
برای تأیید مطمئنتر پرداختها، اجازه دهید درخواستکننده پارامترهای درخواست را با یک کلید منحصر به فرد هش کند . سپس ارائهدهندگان پرداخت میتوانند همان هش را از طرف شما محاسبه کنند و فقط در صورتی درخواست را بپذیرند که با محاسبه شما مطابقت داشته باشد.
چه اتفاقی برای Referer میافتد وقتی یک سایت تجاری HTTP بدون سیاست ارجاع، به یک ارائهدهنده پرداخت HTTPS هدایت میشود؟
هیچ Referer در درخواست به ارائهدهنده پرداخت HTTPS قابل مشاهده نیست، زیرا اکثر مرورگرها به طور پیشفرض strict-origin-when-cross-origin یا no-referrer-when-downgrade زمانی که وبسایت هیچ سیاستی ندارد، استفاده میکنند. تغییر کروم به یک سیاست پیشفرض جدید، این رفتار را تغییر نخواهد داد.
نتیجهگیری
یک سیاست ارجاع محافظتشده، راهی عالی برای افزایش حریم خصوصی کاربران شماست.
برای کسب اطلاعات بیشتر در مورد تکنیکهای مختلف برای محافظت از کاربران خود، به مجموعه Safe and secure ما مراجعه کنید.
منابع
- درک مفاهیم «همان سایت» و «همان مبدا»
- یک سربرگ امنیتی جدید: سیاست ارجاع (۲۰۱۷)
- سیاست ارجاع در MDN
- هدر ارجاع: نگرانیهای مربوط به حریم خصوصی و امنیت در MDN
- تغییر کروم: پیادهسازی نیت چشمک زدن
- تغییر کروم: چشمک زدن برای ارسال
- تغییر کروم: ورود وضعیت
- تغییر کروم: پست وبلاگ نسخه بتا ۸۵
- ارجاعدهنده، رشته گیتهاب را کوتاه میکند: مرورگرهای مختلف چه میکنند؟
- مشخصات سیاست ارجاع
با تشکر فراوان از همه داوران - به ویژه کاستوبا گوویند، دیوید ون کلیو، مایک وست، سم داتون، روآن مروود، جکسک و کیس باسک - به خاطر مشارکتها و بازخوردهایشان.