کوکی چیست؟ وبسایتها چطور شما را به یاد میآورند
کوکی متن کوچکی است که یک وبسایت از مرورگر شما میخواهد ذخیره کند و سپس در هر بازدید بعدی از همان سایت به آن برگرداند. به این ترتیب یک وبسایت «شما را به یاد میآورد»: اینکه وارد شدهاید، چه چیزی در سبد خریدتان است، و کدام زبان را انتخاب کردهاید. کوکیها فقط دادهاند، نه برنامه، اما چون میتوانند شما را شناسایی کنند، هم برای امنیت و هم برای حریم خصوصی اهمیت دارند.
چرا وقتی با هوش مصنوعی میسازید اهمیت دارد
کوکیها زیر چند امکانی قرار دارند که از یک سازندهٔ اپ با هوش مصنوعی میخواهید، اغلب بیآنکه کلمهٔ «کوکی» مطرح شود:
- ورود. در بیشتر اپهای وب، «در سیستم بمان» یعنی یک کوکی نشست. نحوهٔ تنظیم آن کوکی تعیین میکند که دزدیدنش چقدر آسان است.
- سبد خرید و ترجیحات. سبدی که با تازهکردن صفحه از بین نمیرود اغلب به یک کوکی یا فضای ذخیرهٔ مرورگر متکی است.
- تحلیل و تبلیغات. افزودن Google Analytics، پیکسل Meta یا ویجت چت معمولاً کوکیهایی از شرکتهای دیگر هم اضافه میکند.
- اعلامیههای قانونی. در بسیاری از جاها، برخی کوکیها به رضایت قبلی بازدیدکننده نیاز دارند، و بنرهای کوکی از همینجا میآیند.
اگر بدانید اپتان چه کوکیهایی تنظیم میکند و چرا، میتوانید انتخابهای بهتری دربارهٔ تنظیمات امنیتی، رضایت و سیاست حریم خصوصیتان داشته باشید.
یک مثال روزمره
به کاپشندار رستوران فکر کنید. کاپشنتان را تحویل میدهید و یک برگهٔ شمارهدار میگیرید. برگه کاپشن را در خود ندارد، فقط یک شماره دارد. هر بار که به پیشخوان برمیگردید برگه را نشان میدهید و کارمند میداند کاپشن کدام است.
کوکی نشست همینطور کار میکند. وقتی وارد میشوید، سرور جزئیات شما را در سمت خودش نگه میدارد و یک برگه به مرورگرتان میدهد، یک شناسهٔ تصادفی بلند. مرورگر آن برگه را با هر درخواست نشان میدهد و سرور میفهمد شما چه کسی هستید. هر کس برگه را کپی کند میتواند کاپشن را تحویل بگیرد، و به همین دلیل کوکیهای ورود باید محافظت شوند.
کوکی واقعاً چطور کار میکند
۱. شما به یک سایت میروید. پاسخ سرور شامل یک سرآیند مثل Set-Cookie: session_id=8f3k...; HttpOnly; Secure; SameSite=Lax است.
۲. مرورگر آن را ذخیره میکند و به دامنهٔ آن سایت وصل میکند.
۳. در هر درخواست بعدی به همان سایت، مرورگر خودکار Cookie: session_id=8f3k... را اضافه میکند.
۴. سرور آن را میخواند و میداند این شما هستید.
جاوااسکریپت صفحه هم میتواند کوکی بسازد، اما مهمترین کوکیها، یعنی نشستهای ورود، باید توسط سرور تنظیم شوند و از دید جاوااسکریپت پنهان بمانند.
انواع کوکی
| نوع | معنی | مثال |
|---|---|---|
| کوکی نشست | تاریخ انقضا ندارد؛ وقتی نشست مرورگر تمام شود حذف میشود | یک مرحلهٔ کوتاهمدت پرداخت |
| کوکی ماندگار | تاریخ انقضا دارد (Expires یا Max-Age) و با راهاندازی دوباره میماند | «مرا ۳۰ روز به یاد بیاور» |
| اولشخص | توسط سایتی که در نوار نشانی است تنظیم میشود | ورود شما به همان سایت |
| شخص ثالث | توسط دامنهٔ دیگری که در صفحه جاسازی شده تنظیم میشود | شناسهٔ ردیابی یک شبکهٔ تبلیغاتی |
| کاملاً ضروری | برای سرویسی لازم است که کاربر درخواستش را کرده | نشست ورود، سبد خرید |
| غیرضروری | برای صاحب سایت مفید است، نه ضروری | تحلیل، تبلیغات، آزمون A/B |
مرورگرها بهتدریج کوکیهای شخص ثالث را محدود کردهاند، چون برای ردیابی مردم در سایتهای مختلف استفاده میشوند. چند مرورگر بزرگ اکنون بسیاری از آنها را بهطور پیشفرض مسدود میکنند، و جزئیات دائماً تغییر میکند، پس هیچ چیز مهمی را روی کوکیهای شخص ثالث نسازید.
یک مثال کاربردی: یک فروشگاه آنلاین کوچک
فرض کنید یک فروشگاه شمع دستساز ساختهاید. کوکیهایی که یک نسخهٔ منطقی تنظیم میکند و دلیل هر کدام این است.
session: وقتی صاحب فروشگاه یا مشتری وارد میشود تنظیم میشود. فقط یک شناسهٔ تصادفی نگه میدارد؛ دادههای واقعی نشست را سرور نگه میدارد. تنظیمات: HttpOnly (اسکریپتهای صفحه نمیتوانند آن را بخوانند)، Secure (فقط روی HTTPS فرستاده میشود)، SameSite=Lax (در بیشتر درخواستهایی که سایتهای دیگر شروع میکنند فرستاده نمیشود). کاملاً ضروری.
cart_id: به بازدیدکنندهای که وارد نشده امکان میدهد سبدش را نگه دارد. به سبدی که در پایگاه داده ذخیره شده اشاره میکند. کاملاً ضروری، چون بازدیدکننده خواسته چیزی به سبد اضافه کند.
theme: حالت تاریک را به خاطر میسپارد. این میتواند یک کوکی باشد، اما هرگز لازم نیست به سرور برسد، پس localStorage مرورگر سادهتر است.
کوکیهای تحلیل: اگر یک ابزار تحلیل نصب کنید اضافه میشوند. اینها غیرضروریاند. در اتحادیهٔ اروپا و بریتانیا معمولاً پیش از تنظیم به رضایت نیاز دارند، پس اسکریپت تحلیل باید تا وقتی بازدیدکننده روی «پذیرفتن» کلیک نکرده صبر کند.
به این نکته توجه کنید که فروشگاه چه چیزی را در کوکیها ذخیره نمیکند: نام، نشانی یا اطلاعات کارت مشتری. کوکیها با هر درخواست سفر میکنند و روی دستگاه کاربر میمانند، پس باید شناسه نگه دارند، نه دادههای شخصی.
اصطلاحات رایج
| اصطلاح | معنی |
|---|---|
| کوکی | یک جفت نام–مقدار کوچک که مرورگر ذخیره و به سایت برمیگرداند. |
Set-Cookie | سرآیند پاسخی که سرور برای ساختن یا بهروزرسانی کوکی استفاده میکند. |
| نشست | سابقهٔ سرور از کاربر واردشده، که به یک شناسهٔ کوکی وصل است. |
HttpOnly | جلوی خواندن کوکی توسط جاوااسکریپت صفحه را میگیرد، که آسیب اسکریپتهای تزریقشده را محدود میکند. |
Secure | کوکی فقط روی اتصالهای رمزگذاریشدهٔ HTTPS فرستاده میشود. |
SameSite | کنترل میکند که کوکی در درخواستهای سایتهای دیگر فرستاده شود یا نه (Strict، Lax یا None). |
Expires / Max-Age | زمانی که کوکی باید حذف شود. |
| Domain / Path | کدام نشانیهای سایت کوکی را دریافت میکنند. |
| localStorage | فضای ذخیرهٔ مرورگر که کد صفحه میتواند بخواند، اما بهطور خودکار به سرور فرستاده نمیشود. |
| XSS | اسکریپتینگ میانسایتی: اسکریپت مهاجم که در صفحهٔ شما اجرا میشود و ممکن است دادهها را بدزدد. |
| CSRF | جعل درخواست میانسایتی: سایت دیگری مرورگر را فریب میدهد تا با کوکیهای شما درخواستی بفرستد. |
| رضایت کوکی | پرسیدن اجازهٔ بازدیدکننده پیش از تنظیم کوکیهای غیرضروری. |
اشتباهات و باورهای رایج
- «کوکیها ویروساند.» آنها متن سادهاند. نمیتوانند روی رایانهٔ شما کد اجرا کنند.
- گذاشتن دادههای حساس در کوکی. یک شناسهٔ تصادفی نگه دارید و جزئیات را روی سرور نگه دارید.
- توکنهای ورود در localStorage. هر اسکریپتی که روی صفحه اجرا شود، از جمله یک اسکریپت تزریقشده، میتواند localStorage را بخواند. کوکی
HttpOnlyاصلاً توسط اسکریپتهای صفحه قابل خواندن نیست. - نداشتن
SecureوHttpOnly. این دو پرچم ارزاناند و حفرههای رایج را میبندند. - فرض اینکه بنر همهچیز را پوشش میدهد. بنری که تحلیل را پیش از کلیک «پذیرفتن» بار میکند کارش را انجام نمیدهد.
- فراموش کردن خروج. خروج باید کوکی را حذف کند و نشست را روی سرور پایان دهد، تا کوکی کپیشده دیگر کار نکند.
- «اگر از کوکی استفاده نکنم، قوانین حریم خصوصی شامل من نمیشوند.» قوانینی مانند GDPR دادههای شخصی را هرجا ذخیره شوند پوشش میدهند، از جمله localStorage، اثر انگشت دستگاه و لاگهای سرور.
از سازندهٔ اپ با هوش مصنوعیتان چه بخواهید
- «هر کوکی که اپ تنظیم میکند، کاری که انجام میدهد، مدت اعتبارش و اینکه آیا کاملاً ضروری است را فهرست کن.»
- «برای نشست ورود از یک کوکی
HttpOnly،Secure،SameSite=Laxاستفاده کن. توکنهای احراز هویت را در localStorage نگذار.» - «در کوکی فقط یک شناسهٔ تصادفی نشست نگه دار؛ دادههای نشست را روی سرور ذخیره کن.»
- «هنگام خروج، کوکی را پاک کن و نشست را روی سرور باطل کن.»
- «اسکریپتهای تحلیل یا بازاریابی را تا وقتی بازدیدکننده نپذیرفته بار نکن، و انتخابش را به خاطر بسپار.»
- «یک بخش ساده دربارهٔ کوکی به سیاست حریم خصوصی اضافه کن که با فهرست بالا جور باشد.»
برای بخش رضایت، چطور رضایت کوکی را اضافه کنیم را ببینید. برای اینکه کوکیها با ورود چطور جور میشوند، احراز هویت چیست را بخوانید.
کوکیها در Mythex
Mythex یک ورود داخلی برای کاربران اپتان ارائه نمیدهد، پس کوکیهایی که اپتان تنظیم میکند از کد خود اپ و ابزارهایی که به آن اضافه میکنید میآیند؛ برای نمونه یک کوکی نشست از روشی که برای احراز هویت انتخاب میکنید. در چت از ایجنت بخواهید فهرستشان کند، تنظیماتشان را محکمتر کند، یا یک بنر رضایت اضافه کند، و نتیجه را در پیشنمایش زنده بررسی کنید پیش از انتشار. دستور نقطهٔ شروع خوبی برای افزودن ورود به اپ در مستندات است، و امنیت برای اپهایی که میسازید توضیح میدهد چطور کلیدها و رازها را از مرورگر دور نگه دارید.
پرسشها
کوکی در یک وبسایت چیست؟
کوکی متن کوچکی است که یک وبسایت از مرورگر شما میخواهد ذخیره کند. مرورگر آن را در هر درخواست بعدی به همان سایت برمیگرداند و این به سایت اجازه میدهد چیزهایی مثل اینکه وارد شدهاید یا چه چیزی در سبد خریدتان است را به خاطر بسپارد.
آیا کوکیها خطرناکاند؟
کوکیها فقط دادهاند، نه برنامه، پس نمیتوانند کد اجرا کنند یا رایانه را آلوده کنند. نگرانیها مربوط به حریم خصوصی است، وقتی کوکیهای شخص ثالث شما را در سایتهای مختلف دنبال میکنند، و امنیت، وقتی یک کوکی ورود دزدیده شود و برای جعل هویت شما استفاده شود.
تفاوت کوکیهای اولشخص و شخص ثالث چیست؟
کوکی اولشخص را خود سایتی که در نوار نشانی میبینید تنظیم میکند، مثل کوکی ورود. کوکی شخص ثالث را دامنهٔ دیگری که در صفحه جاسازی شده تنظیم میکند، مثل یک شبکهٔ تبلیغاتی، و اغلب برای دنبال کردن شما در سایتهای زیادی استفاده میشود.
آیا به بنر کوکی نیاز دارم؟
بستگی دارد که کاربرانتان کجا هستند و از چه کوکیهایی استفاده میکنید. در اتحادیهٔ اروپا و بریتانیا، کوکیهای غیرضروری مانند تحلیل یا تبلیغات معمولاً به رضایت قبلی نیاز دارند، در حالی که کوکیهایی که برای خود سرویس کاملاً ضروریاند، مانند نشست ورود، معمولاً نیازی به آن ندارند. قوانین مربوط به خودتان را بررسی کنید.
تفاوت کوکیها و localStorage چیست؟
هر دو داده را در مرورگر ذخیره میکنند. کوکیها در هر درخواست بهطور خودکار به سرور فرستاده میشوند، که برای ورود مناسب است. localStorage در مرورگر میماند و فقط کد خود صفحه آن را میخواند، که برای ترجیحاتی مثل تم مناسب است.