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

در برنامه‌نویسی وب بسیار پیش می‌آید که نیاز به ذخیره اطلاعات در متغیرهایی داشته باشیم که در سراسر پروژه در دسترس باشند. در این شرایط می‌توان از Session ها و Cookie ها استفاده کرد.کوکی (Cookie):پروتکل HTTP پروتکلی Stateless است به این معنی که اطلاعاتی از درخواست کننده را نزد سرور نگهداری نمی کند. بنابر این در درخواست های بعدی، امکان شناسایی طرفین درخواست وجود ندارد. با استفاده از cookie می توان برای شناسایی کاربران اطلاعات server را نزد client قرار داد.کوکی ها (Cookie) ها فایل های متنی هستند که توسط مرورگر Client در مرورگر وی و به صورت محلی (local) برای شناسایی کاربر ذخیره می شوند. کوکی ها طول عمر دارند و بنا به خواست توسعه دهنده تنظیم می شوند. کوکی های متعلق به یک دامنه، در اولین درخواست بین Client و Server رد وبدل می شنود تا در درخواست های بعدی امکان شناسایی وجود داشته باشد. از آنجا که کوکی ها با جا به جا شدن از یک صفحه به صفحه دیگر و یا حتی بسته شدن مرورگر از بین نمی روند، می توان از آنها برای ذخیره توکن کابر، ذخیره تنظیمات کاربر مانند اندازه فونت و رنگ اجزای صفحه، نام کاربری و … استفاده کرد. نکته مهم درباره کوکی ها این است که کوکی ها در دسترس هستند و دستکاری یا سرقت آن ها کاری دشوار نیست، بنا بر این نباید قابل خواندن و حاوی اطلاعات مهم باشند.یک کوکی از بخش های زیر تشکیل شده است:تاریخ انقضا (Expire):تاریخ انقضا یا طول عمر کوکی.محتوا (Content):محتوای ذخیره شده در کوکی.دامنه (Domain):دامنه ای که کوکی در آن ایجاد می شود.مسیر (Path):مسیری که کوکی در آن ذخیره می شود.امنیت (Secure):اطلاعات امنیتی مربوط به سرویس دهنده های امن.انواع کوکی:کوکی های session:برای مواقعی که نیاز است یک کوکی به طور موقت استفاده شود از آنها استفاده میکنیم زیرا آنها در حافظه موقت ذخیره می شوند و تا زمانی که مرورگر کاربر بسته شود باقی می مانند.کوکی های امن یا secure:این کوکی ها رمزگذاری شده است و فقط در یک اتصال امن HTTPS کار می کند. برای نگهداری اطلاعات حساس از این نوع کوکی استفاده می شود. به دلیل اینکه این نوع کوکی رمزنگاری شده هستند از سایر انواع خود امن تر هستند.کوکی های پایدار یا Persistent:از آن ها برای ردیابی و جمع آوری اطلاعات کاربر در طول یک بازه زمانی خاص استفاده می کنند.کوکی های HttpOnly :این کوکی ها فقط توسط دامنه ای که آنها را ایجاد کرده اند می توانند مورد استفاده قرار بگیرند، همچنین نمی توانند توسط هیچ پروتکلی غیر از HTTP استفاده شوند. فقط کوکی های session می توانند HttpOnly باشند.کوکی های شخص ثالث یا Third-Party:این کوکی ها متعلق به یک دامنه متفاوت، غیر از دامنه ای که آنها را ایجاد کرده است می باشند و می توانند تاریخچه مرور یک کاربر را در چندین وبسایت که از یک شبکه تبلیغاتی استفاده می کنند، ذخیره کنند. از آنجا که این کوکی ها در شبکه های تبلیغاتی برای تبلیغات هوشمند برای ردیابی اطلاعات استفاده می شود ممکن است به حریم خصوصی آسیب برساند. کوکی های زامبی:این نوع کوکی ها در خارج از مرورگر ذخیره می شوند و پس از حذف شدن، خود را بازیابی می کنند. آنها معمولا توسط سرویس های تجزیه و تحلیل و به این دلیل که اگر کاربر کوکی ها را حذف کرد، داده ها از بین نروند مورد استفاده قرار می گیرند. آنها همچنین می توانند برای اهداف مخرب مورد استفاده قرار بگیرند، زیرا مرورگر نمی تواند وجود آن ها را کنترل کند. تنها محصولات امنیتی مثل آنتی ویروس ها هستند که می توانند کوکی های زامبی را شناسایی و حذف کنند.سشن (Session):سشن (Session) برخلاف کوکی ها در سرویس دهنده (Server) ذخیره می شود. مکان ذخیره Session را میتوان تغییر داد ولی به صورت پیشفرض در حافظه ذخیره می شود، به همین دلیل به سرعت قابل دسترسی هستند. به این دلیل که مقادیر Session عمومی نیست باید به ازای هر کاربر ایجاد گردد. بنابراین باید در هنگام ساخت یک Session، یک کوکی هم در سرویس گیرنده با مقدار آیدی Session ایجاد گردد.به طور پیش فرض، Session ها بعد از بسته شدن مرورگر، از بین خواخند رفت بنابر این در صورتی که اطلاعات حساس در آن ها قرار می گیرد باید مقدار آن ها در پایگاه داده ذخیره شوند.از sessionها باید فقط برای اطلاعات مهم استفاده کرد زیرا استفاده بیش از حد از آن ها می تواند موجب کاهش سرعت بارگذاری صفحات شود. مراحل ایجاد یک session: ایجاد یک session با Id منحصر به فرد.ایجاد یک cookie هم نام session در مرورگر کاربر.ایجاد یک فایل در دایرکتوری موقت مشخص شده بر روی سرور با Id سشن.