ماندگاری داده (کوکیها، جلسات، توکنها، ذخیرهسازی محلی و ذخیرهسازی جلسه)

Summarize this content to 400 words in Persian Lang
در این مقاله، نحوه عملکرد ماندگاری داده در وب را در دو بخش بررسی خواهیم کرد. ابتدا نحوه ذخیره اطلاعات احراز هویت با استفاده از کوکی ها با جلسات یا نشانه ها را پوشش خواهیم داد. در مرحله بعد، نحوه استفاده از تداوم سمت مرورگر برای ذخیره تنظیمات برگزیده کاربر، با استفاده از کوکی ها برای شناسایی و localStorage یا sessionStorage برای ذخیره این تنظیمات برگزیده را بررسی خواهیم کرد.
مقدمه:
برای درک ماندگاری داده ها در برنامه های کاربردی وب، درک نحوه تعامل مرورگر و وب سرور ضروری است:
• HTTP (پروتکل انتقال ابرمتن): این پروتکل ارتباط بین مرورگر و سرور را تسهیل می کند، اما بدون حالت است، به این معنی که اطلاعات مربوط به تعاملات قبلی را حفظ نمی کند.
• درخواست و پاسخ: هر بار که کاربر از یک URL بازدید می کند یا با یک وب سایت تعامل می کند، مرورگر درخواستی را به سرور ارسال می کند و سرور با اطلاعات درخواستی پاسخ می دهد.
نیاز به پایداری: به دلیل ماهیت بدون حالت HTTP، کوکی ها ایجاد شدند تا سرورها بتوانند کاربران و ترجیحات آنها را در بازدیدهای بعدی به خاطر بسپارند.
1. کوکی ها
کوکی ها اطلاعات کوچکی هستند که یک وب سایت به مرورگر کاربر ارسال می کند تا در محلی ذخیره شود. آنها به صورت جفت کلید-مقدار نشان داده می شوند، جایی که کلید به عنوان یک برچسب شناسایی برای کوکی عمل می کند. یک وبسایت میتواند چندین کوکی تنظیم کند، و در هر درخواست بعدی، مرورگر این کوکیها را به سرور ارسال میکند و به سرور اجازه میدهد با یک صفحه شخصیشده پاسخ دهد.
ویژگی های کوکی ها:
• ذخیره سازی: کوکی ها در مرورگر کاربر ذخیره می شوند و توسط اسکریپت های سمت سرویس گیرنده (جاوا اسکریپت) قابل دسترسی هستند.
• استفاده: آنها به طور گسترده برای شخصی کردن تجربه کاربر، به خاطر سپردن تنظیمات برگزیده زبان، نگه داشتن جلسات کاربر به سیستم و ردیابی تبلیغات استفاده می شوند.
• امنیت: اگر کوکی ها به درستی پیکربندی نشده باشند، می توانند آسیب پذیر باشند، به خصوص در برابر حملات XSS (Cross-Site Scripting). بنابراین، ذخیره داده های حساس در آنها توصیه نمی شود.
مدت زمان: کوکیها میتوانند کوکیهای جلسه (وقتی مرورگر را ببندید حذف میشوند) یا کوکیهای دائمی (برای مدت زمان مشخصی باقی میمانند).
تاریخچه و عملیات:
کوکی ها در سال 1994 برای فعال کردن تداوم وضعیت در تعاملات وب ایجاد شدند. این نام از قیاس با کوکیهای ثروت گرفته شده است که حاوی پیامی درون آن است. در ابتدا، هیچ راهی برای به خاطر سپردن تنظیمات برگزیده کاربر یا شناسایی کاربر وجود نداشت، به این معنی که همه کاربران نسخه مشابهی از وب سایت را می دیدند.
• عملیات اساسی: کوکی ها به صورت خودکار با هر درخواست HTTP به سرور ارسال می شوند. اینها ممکن است متعلق به شما (ایجاد شده توسط وبسایتی که بازدید میکنید) یا اشخاص ثالث (ایجاد شده توسط سرورهای خارجی، مانند سرورهای تبلیغاتی) باشند.
• انواع کوکی ها:
کوکی های شخصی: مرتبط با دامنه وب سایتی که کاربر از آن بازدید می کند.
کوکی های شخص ثالث: مرتبط با دامنه های خارجی، مانند سرورهای تبلیغات، برای ردیابی تبلیغات و شخصی سازی.
محدودیت ها و ملاحظات ایمنی:
• حجم: محدود به 4 کیلوبایت.
• آسیب پذیری: اگر به درستی پیکربندی نشده باشند، می توان آنها را مورد حمله قرار داد یا اصلاح کرد.
• مدت زمان: آنها می توانند جلسه باشند (هنگام بسته شدن مرورگر حذف شوند) یا دائمی (با تاریخ انقضا مشخص).
نحوه عملکرد کوکی ها در حالت ماندگاری:
ورود و احراز هویت اولیه: زمانی که کاربر برای اولین بار وارد یک وب سایت می شود، اطلاعات کاربری خود را وارد کرده و وارد سایت می شود.
پاسخ سرور: سرور با صفحه اصلی پاسخ می دهد و یک هدر به نام “Set-Cookie” اضافه می کند و یک کوکی با نام “sessionid” و یک مقدار عددی اختصاص می دهد. این یک شناسه جلسه است.
ایجاد کوکی: مرورگر این کوکی را با نام و مقدار اختصاص داده شده توسط سرور ذخیره می کند.
درخواستهای بعدی: در درخواستهای بعدی، مانند دسترسی به تاریخچه سفارش، مرورگر کوکی را در هدر کوکی قرار میدهد و به سرور اجازه میدهد تا کاربر را شناسایی کرده و جلسه او را تأیید کند، بدون اینکه نیازی به درخواست مجدد اعتبار آنها باشد.
شناسایی و پاسخ سرور: سرور از مقدار sessionid برای شناسایی کاربر و پاسخگویی با اطلاعات درخواستی استفاده می کند و در طول جلسه پایداری حالت را حفظ می کند. اگر کاربر از سیستم خارج شود یا جلسه منقضی شود، کوکی باطل می شود.
جایگزین های کوکی ها برای احراز هویت:
کوکی ها احراز هویت مبتنی بر جلسه را امکان پذیر می کنند، اما خطرات امنیتی وجود دارد. به همین دلیل، جایگزین هایی مانند توکن ها (JWT، OAuth) ایجاد شده اند که امکان احراز هویت ایمن و کنترل شده را بدون ذخیره اطلاعات محرمانه به طور مستقیم در کوکی ها فراهم می کنند. توکن ها برای سناریوهایی که شامل چندین طرف است که ممکن است به یکدیگر اعتماد نداشته باشند، مناسب هستند.
2. احراز هویت و جلسات
احراز هویت مبتنی بر کوکی و توکن روش های پرکاربردی هستند و در بسیاری از موارد به صورت مکمل استفاده می شوند. به عنوان مثال، یک برنامه تلفن همراه ممکن است از نشانه ها استفاده کند، در حالی که یک وب سایت همان سرویس ممکن است از احراز هویت مبتنی بر کوکی استفاده کند.
جلسات در مقابل احراز هویت مبتنی بر توکن:
• احراز هویت با کوکی ها و جلسات: این روش فقط شامل کاربر و سرور می شود. از کوکیها برای لاگین نگهداشتن جلسه و به خاطر سپردن کاربر با هر درخواست استفاده میشود و به او امکان دسترسی به تمام اطلاعات موجود را میدهد. جلسات دارای طول عمر مشخصی هستند که ممکن است پس از مدتی عدم فعالیت یا پس از بسته شدن جلسه منقضی شود. آنها به عنوان راه حلی برای غلبه بر محدودیت های امنیتی کوکی ها ظاهر شدند و امکان احراز هویت امن تر را فراهم کردند.
• احراز هویت رمز: این رویکرد در سناریوهایی که چندین طرف درگیر هستند، مانند برنامه های تلفن همراه استفاده می شود. توکنها، مانند JWT، کلیدهای موقتی هستند که دسترسی محدودی به دادههای کاربر را بدون افشای اعتبار آنها فراهم میکنند. این توکن ها عمر محدودی دارند و در صورت لزوم می توان آنها را باطل کرد.
اگر کاربر تصمیم به لغو دسترسی داشته باشد، میتواند توکن را باطل کرده و آن را از حساب جدا کند. توکن ها را می توان با استفاده از پروتکل هایی مانند JWT، OAuth2 یا OpenID صادر کرد. به عنوان مثال، یک توکن JWT می تواند حاوی اطلاعات مهمی مانند محدوده توکن، تاریخ ایجاد و تاریخ انقضا باشد. این اطلاعات به صورت رمزنگاری امضا شده است، که یکپارچگی توکن را تضمین می کند و تغییر آن را بدون بی اعتبار کردن غیرممکن می کند.
ماندگاری داده در مرورگر:
کوکیها، localStorage و sessionStorage سه مکانیسم ذخیرهسازی وب هستند که در سمت مرورگر کار میکنند، نه روی سرور. از این میان، تنها کوکی ها می توانند به صورت خودکار با هر درخواست به سرور ارسال شوند. در عوض، localStorage و sessionStorage دادهها را منحصراً در سمت مشتری ذخیره میکنند. تفاوت های کلیدی بین آنها در ماندگاری، ظرفیت ذخیره سازی و دسترسی به داده ها نهفته است.
کوکی ها:
کوکیها قدیمیترین و سنتیترین روش برای ذخیره اطلاعات کاربر در مرورگر هستند، مانند احراز هویت یا دادههای سبد خرید. آنها به صورت متن ذخیره می شوند و از هر پنجره مرورگر قابل دسترسی هستند، یعنی اگر چندین پنجره از یک وب سایت باز شود، همان کوکی و مقدار آن در دسترس خواهد بود.
هر بار که مرورگر درخواستی را به سرور ارسال می کند، تمام کوکی های مرتبط با دامنه را پیوست می کند و به سرور اجازه می دهد آنها را پردازش کند. اگرچه برای احراز هویت و ردیابی کاربر مفید است، اما کوکی ها به 4 کیلوبایت فضای ذخیره سازی محدود می شوند و برای ذخیره حجم زیادی از اطلاعات ایده آل نیستند. علاوه بر این، از آنجایی که کوکیها بهطور خودکار با هر درخواست HTTP ارسال میشوند، کوکیها میتوانند در برابر حملات آسیبپذیر باشند، بنابراین ذخیره دادههای حساس در آنها توصیه نمیشود.
localStorage و sessionStorage:
برای غلبه بر محدودیتهای کوکیها، localStorage و sessionStorage معرفی شدند، دو API مرورگر که اجازه میدهند دادهها با انعطافپذیری بیشتر و با ظرفیتهای بیشتر ذخیره شوند. تفاوت اصلی بین این دو در ماندگاری آنهاست: دادههای sessionStorage با بستن مرورگر حذف میشوند، در حالی که در localStorage تا زمانی که به صورت دستی یا با کد حذف نشود، باقی میماند.
هر دو مکانیزم ظرفیت ذخیره سازی را ارائه می دهند که بسته به مرورگر بین 5 تا 10 مگابایت متغیر است. برخلاف کوکیها، دادههای موجود در localStorage و sessionStorage با هر درخواست HTTP ارسال نمیشوند، که آنها را برای ذخیره اطلاعات در سمت کلاینت ایمنتر میکند، اگرچه هنوز هم برای جلوگیری از دسترسی غیرمجاز اسکریپتهای مخرب به اقدامات احتیاطی نیاز دارند.
مقایسه: کوکی ها در مقابل محل ذخیره سازی در مقابل sessionStorage
کوکی ها:
• تعریف: بخش هایی از اطلاعات ارسال شده توسط وب سایت به مرورگر کاربر برای ذخیره سازی محلی.
• Storage: در مرورگر ذخیره می شود و با هر درخواست HTTP به صورت خودکار ارسال می شود.
• استفاده: عمدتاً برای احراز هویت و ردیابی کاربر. آنها در تمام پنجره های مرورگر قابل دسترسی هستند.
• مدت زمان: آنها می توانند جلسه یا دائمی باشند، با تاریخ انقضا مشخص یا حذف دستی.
• امنیت: اگر به درستی پیکربندی نشود، در برابر حملات XSS آسیب پذیر است. ذخیره اطلاعات حساس توصیه نمی شود.
حجم: محدود به 4 کیلوبایت
محل ذخیره سازی:
• تعریف: API مرورگر که اجازه می دهد تا داده های دائمی در مرورگر کاربر ذخیره شوند.
• فضای ذخیره سازی: منحصراً در مرورگر، با هر درخواست HTTP ارسال نمی شود. اطلاعات برای هر مبدا (پروتکل URL و دامنه) منحصر به فرد است.
• مدت زمان: بین جلسات ثابت است، هنگام بستن مرورگر حذف نمی شود. داده ها باقی می مانند تا زمانی که به صورت دستی یا از طریق کد حذف شوند.
• ظرفیت: به طور کلی بین 5 تا 10 مگابایت.
• استفاده: ایده آل برای ذخیره سازی داده هایی که باید پس از جلسه کاربر باقی بمانند، مانند تنظیمات کاربر یا وضعیت برنامه، زیرا زمان انقضا ندارند. به عنوان مثال، از آنها برای بهبود تجربه کاربر استفاده می شود، ترجیحات آنها مانند موضوع مرورگر، زبان ها و سایر موارد را ذخیره می کنند و از درخواست مکرر از کاربر اجتناب می کنند.
sessionStorage:
• تعریف: مشابه LocalStorage، اما با تداوم محدود به جلسه مرور فعلی.
• ذخیره سازی: انحصاری در مرورگر کاربر. با هر درخواست HTTP ارسال نمی شود. هر برگه sessionStorage مستقل خود را دارد.
• مدت زمان: فقط در طول جلسه مرور ادامه دارد. وقتی برگه یا پنجره را ببندید حذف می شود.
• ظرفیت: مشابه LocalStorage (5 تا 10 مگابایت).
• استفاده: برای ذخیره داده های موقتی که فقط باید در طول جلسه مرور فعلی وجود داشته باشند، مانند فرم های نیمه تکمیل شده مفید است.
امنیت و دسترسی ذخیره سازی:
داده های موجود در localStorage، sessionStorage و کوکی ها را می توان از کنسول مرورگر مشاهده و دستکاری کرد، بنابراین توصیه نمی شود اطلاعات حساس را در آنها ذخیره کنید.
نحوه استفاده از localStorage و sessionStorage:
هم localStorage و هم sessionStorage اشیایی در متغیر پنجره جهانی جاوا اسکریپت هستند. هر دو داده ها را در جفت های کلید-مقدار ذخیره می کنند، جایی که کلیدها و مقادیر هر دو رشته هستند.
1. ذخیره داده ها:
localStorage.setItem('key', 'value');
sessionStorage.setItem('key', 'value');
2. دریافت داده:
const value = localStorage.getItem('key');
const value = sessionStorage.getItem('key');
3. حذف داده ها:
localStorage.removeItem('key');
sessionStorage.removeItem('key');
4. تمام داده ها را حذف کنید:
localStorage.clear();
sessionStorage.clear();
مثال:
در این مقاله، نحوه عملکرد ماندگاری داده در وب را در دو بخش بررسی خواهیم کرد. ابتدا نحوه ذخیره اطلاعات احراز هویت با استفاده از کوکی ها با جلسات یا نشانه ها را پوشش خواهیم داد. در مرحله بعد، نحوه استفاده از تداوم سمت مرورگر برای ذخیره تنظیمات برگزیده کاربر، با استفاده از کوکی ها برای شناسایی و localStorage یا sessionStorage برای ذخیره این تنظیمات برگزیده را بررسی خواهیم کرد.
مقدمه:
برای درک ماندگاری داده ها در برنامه های کاربردی وب، درک نحوه تعامل مرورگر و وب سرور ضروری است:
• HTTP (پروتکل انتقال ابرمتن): این پروتکل ارتباط بین مرورگر و سرور را تسهیل می کند، اما بدون حالت است، به این معنی که اطلاعات مربوط به تعاملات قبلی را حفظ نمی کند.
• درخواست و پاسخ: هر بار که کاربر از یک URL بازدید می کند یا با یک وب سایت تعامل می کند، مرورگر درخواستی را به سرور ارسال می کند و سرور با اطلاعات درخواستی پاسخ می دهد.
نیاز به پایداری: به دلیل ماهیت بدون حالت HTTP، کوکی ها ایجاد شدند تا سرورها بتوانند کاربران و ترجیحات آنها را در بازدیدهای بعدی به خاطر بسپارند.
1. کوکی ها
کوکی ها اطلاعات کوچکی هستند که یک وب سایت به مرورگر کاربر ارسال می کند تا در محلی ذخیره شود. آنها به صورت جفت کلید-مقدار نشان داده می شوند، جایی که کلید به عنوان یک برچسب شناسایی برای کوکی عمل می کند. یک وبسایت میتواند چندین کوکی تنظیم کند، و در هر درخواست بعدی، مرورگر این کوکیها را به سرور ارسال میکند و به سرور اجازه میدهد با یک صفحه شخصیشده پاسخ دهد.
ویژگی های کوکی ها:
• ذخیره سازی: کوکی ها در مرورگر کاربر ذخیره می شوند و توسط اسکریپت های سمت سرویس گیرنده (جاوا اسکریپت) قابل دسترسی هستند.
• استفاده: آنها به طور گسترده برای شخصی کردن تجربه کاربر، به خاطر سپردن تنظیمات برگزیده زبان، نگه داشتن جلسات کاربر به سیستم و ردیابی تبلیغات استفاده می شوند.
• امنیت: اگر کوکی ها به درستی پیکربندی نشده باشند، می توانند آسیب پذیر باشند، به خصوص در برابر حملات XSS (Cross-Site Scripting). بنابراین، ذخیره داده های حساس در آنها توصیه نمی شود.
مدت زمان: کوکیها میتوانند کوکیهای جلسه (وقتی مرورگر را ببندید حذف میشوند) یا کوکیهای دائمی (برای مدت زمان مشخصی باقی میمانند).
تاریخچه و عملیات:
کوکی ها در سال 1994 برای فعال کردن تداوم وضعیت در تعاملات وب ایجاد شدند. این نام از قیاس با کوکیهای ثروت گرفته شده است که حاوی پیامی درون آن است. در ابتدا، هیچ راهی برای به خاطر سپردن تنظیمات برگزیده کاربر یا شناسایی کاربر وجود نداشت، به این معنی که همه کاربران نسخه مشابهی از وب سایت را می دیدند.
• عملیات اساسی: کوکی ها به صورت خودکار با هر درخواست HTTP به سرور ارسال می شوند. اینها ممکن است متعلق به شما (ایجاد شده توسط وبسایتی که بازدید میکنید) یا اشخاص ثالث (ایجاد شده توسط سرورهای خارجی، مانند سرورهای تبلیغاتی) باشند.
• انواع کوکی ها:
-
کوکی های شخصی: مرتبط با دامنه وب سایتی که کاربر از آن بازدید می کند.
-
کوکی های شخص ثالث: مرتبط با دامنه های خارجی، مانند سرورهای تبلیغات، برای ردیابی تبلیغات و شخصی سازی.
محدودیت ها و ملاحظات ایمنی:
• حجم: محدود به 4 کیلوبایت.
• آسیب پذیری: اگر به درستی پیکربندی نشده باشند، می توان آنها را مورد حمله قرار داد یا اصلاح کرد.
• مدت زمان: آنها می توانند جلسه باشند (هنگام بسته شدن مرورگر حذف شوند) یا دائمی (با تاریخ انقضا مشخص).
نحوه عملکرد کوکی ها در حالت ماندگاری:
-
ورود و احراز هویت اولیه: زمانی که کاربر برای اولین بار وارد یک وب سایت می شود، اطلاعات کاربری خود را وارد کرده و وارد سایت می شود.
-
پاسخ سرور: سرور با صفحه اصلی پاسخ می دهد و یک هدر به نام “Set-Cookie” اضافه می کند و یک کوکی با نام “sessionid” و یک مقدار عددی اختصاص می دهد. این یک شناسه جلسه است.
-
ایجاد کوکی: مرورگر این کوکی را با نام و مقدار اختصاص داده شده توسط سرور ذخیره می کند.
-
درخواستهای بعدی: در درخواستهای بعدی، مانند دسترسی به تاریخچه سفارش، مرورگر کوکی را در هدر کوکی قرار میدهد و به سرور اجازه میدهد تا کاربر را شناسایی کرده و جلسه او را تأیید کند، بدون اینکه نیازی به درخواست مجدد اعتبار آنها باشد.
-
شناسایی و پاسخ سرور: سرور از مقدار sessionid برای شناسایی کاربر و پاسخگویی با اطلاعات درخواستی استفاده می کند و در طول جلسه پایداری حالت را حفظ می کند. اگر کاربر از سیستم خارج شود یا جلسه منقضی شود، کوکی باطل می شود.
جایگزین های کوکی ها برای احراز هویت:
کوکی ها احراز هویت مبتنی بر جلسه را امکان پذیر می کنند، اما خطرات امنیتی وجود دارد. به همین دلیل، جایگزین هایی مانند توکن ها (JWT، OAuth) ایجاد شده اند که امکان احراز هویت ایمن و کنترل شده را بدون ذخیره اطلاعات محرمانه به طور مستقیم در کوکی ها فراهم می کنند. توکن ها برای سناریوهایی که شامل چندین طرف است که ممکن است به یکدیگر اعتماد نداشته باشند، مناسب هستند.
2. احراز هویت و جلسات
احراز هویت مبتنی بر کوکی و توکن روش های پرکاربردی هستند و در بسیاری از موارد به صورت مکمل استفاده می شوند. به عنوان مثال، یک برنامه تلفن همراه ممکن است از نشانه ها استفاده کند، در حالی که یک وب سایت همان سرویس ممکن است از احراز هویت مبتنی بر کوکی استفاده کند.
جلسات در مقابل احراز هویت مبتنی بر توکن:
• احراز هویت با کوکی ها و جلسات: این روش فقط شامل کاربر و سرور می شود. از کوکیها برای لاگین نگهداشتن جلسه و به خاطر سپردن کاربر با هر درخواست استفاده میشود و به او امکان دسترسی به تمام اطلاعات موجود را میدهد. جلسات دارای طول عمر مشخصی هستند که ممکن است پس از مدتی عدم فعالیت یا پس از بسته شدن جلسه منقضی شود. آنها به عنوان راه حلی برای غلبه بر محدودیت های امنیتی کوکی ها ظاهر شدند و امکان احراز هویت امن تر را فراهم کردند.
• احراز هویت رمز: این رویکرد در سناریوهایی که چندین طرف درگیر هستند، مانند برنامه های تلفن همراه استفاده می شود. توکنها، مانند JWT، کلیدهای موقتی هستند که دسترسی محدودی به دادههای کاربر را بدون افشای اعتبار آنها فراهم میکنند. این توکن ها عمر محدودی دارند و در صورت لزوم می توان آنها را باطل کرد.
اگر کاربر تصمیم به لغو دسترسی داشته باشد، میتواند توکن را باطل کرده و آن را از حساب جدا کند. توکن ها را می توان با استفاده از پروتکل هایی مانند JWT، OAuth2 یا OpenID صادر کرد. به عنوان مثال، یک توکن JWT می تواند حاوی اطلاعات مهمی مانند محدوده توکن، تاریخ ایجاد و تاریخ انقضا باشد. این اطلاعات به صورت رمزنگاری امضا شده است، که یکپارچگی توکن را تضمین می کند و تغییر آن را بدون بی اعتبار کردن غیرممکن می کند.
ماندگاری داده در مرورگر:
کوکیها، localStorage و sessionStorage سه مکانیسم ذخیرهسازی وب هستند که در سمت مرورگر کار میکنند، نه روی سرور. از این میان، تنها کوکی ها می توانند به صورت خودکار با هر درخواست به سرور ارسال شوند. در عوض، localStorage و sessionStorage دادهها را منحصراً در سمت مشتری ذخیره میکنند. تفاوت های کلیدی بین آنها در ماندگاری، ظرفیت ذخیره سازی و دسترسی به داده ها نهفته است.
کوکی ها:
کوکیها قدیمیترین و سنتیترین روش برای ذخیره اطلاعات کاربر در مرورگر هستند، مانند احراز هویت یا دادههای سبد خرید. آنها به صورت متن ذخیره می شوند و از هر پنجره مرورگر قابل دسترسی هستند، یعنی اگر چندین پنجره از یک وب سایت باز شود، همان کوکی و مقدار آن در دسترس خواهد بود.
هر بار که مرورگر درخواستی را به سرور ارسال می کند، تمام کوکی های مرتبط با دامنه را پیوست می کند و به سرور اجازه می دهد آنها را پردازش کند. اگرچه برای احراز هویت و ردیابی کاربر مفید است، اما کوکی ها به 4 کیلوبایت فضای ذخیره سازی محدود می شوند و برای ذخیره حجم زیادی از اطلاعات ایده آل نیستند. علاوه بر این، از آنجایی که کوکیها بهطور خودکار با هر درخواست HTTP ارسال میشوند، کوکیها میتوانند در برابر حملات آسیبپذیر باشند، بنابراین ذخیره دادههای حساس در آنها توصیه نمیشود.
localStorage و sessionStorage:
برای غلبه بر محدودیتهای کوکیها، localStorage و sessionStorage معرفی شدند، دو API مرورگر که اجازه میدهند دادهها با انعطافپذیری بیشتر و با ظرفیتهای بیشتر ذخیره شوند. تفاوت اصلی بین این دو در ماندگاری آنهاست: دادههای sessionStorage با بستن مرورگر حذف میشوند، در حالی که در localStorage تا زمانی که به صورت دستی یا با کد حذف نشود، باقی میماند.
هر دو مکانیزم ظرفیت ذخیره سازی را ارائه می دهند که بسته به مرورگر بین 5 تا 10 مگابایت متغیر است. برخلاف کوکیها، دادههای موجود در localStorage و sessionStorage با هر درخواست HTTP ارسال نمیشوند، که آنها را برای ذخیره اطلاعات در سمت کلاینت ایمنتر میکند، اگرچه هنوز هم برای جلوگیری از دسترسی غیرمجاز اسکریپتهای مخرب به اقدامات احتیاطی نیاز دارند.
مقایسه: کوکی ها در مقابل محل ذخیره سازی در مقابل sessionStorage
کوکی ها:
• تعریف: بخش هایی از اطلاعات ارسال شده توسط وب سایت به مرورگر کاربر برای ذخیره سازی محلی.
• Storage: در مرورگر ذخیره می شود و با هر درخواست HTTP به صورت خودکار ارسال می شود.
• استفاده: عمدتاً برای احراز هویت و ردیابی کاربر. آنها در تمام پنجره های مرورگر قابل دسترسی هستند.
• مدت زمان: آنها می توانند جلسه یا دائمی باشند، با تاریخ انقضا مشخص یا حذف دستی.
• امنیت: اگر به درستی پیکربندی نشود، در برابر حملات XSS آسیب پذیر است. ذخیره اطلاعات حساس توصیه نمی شود.
حجم: محدود به 4 کیلوبایت
محل ذخیره سازی:
• تعریف: API مرورگر که اجازه می دهد تا داده های دائمی در مرورگر کاربر ذخیره شوند.
• فضای ذخیره سازی: منحصراً در مرورگر، با هر درخواست HTTP ارسال نمی شود. اطلاعات برای هر مبدا (پروتکل URL و دامنه) منحصر به فرد است.
• مدت زمان: بین جلسات ثابت است، هنگام بستن مرورگر حذف نمی شود. داده ها باقی می مانند تا زمانی که به صورت دستی یا از طریق کد حذف شوند.
• ظرفیت: به طور کلی بین 5 تا 10 مگابایت.
• استفاده: ایده آل برای ذخیره سازی داده هایی که باید پس از جلسه کاربر باقی بمانند، مانند تنظیمات کاربر یا وضعیت برنامه، زیرا زمان انقضا ندارند. به عنوان مثال، از آنها برای بهبود تجربه کاربر استفاده می شود، ترجیحات آنها مانند موضوع مرورگر، زبان ها و سایر موارد را ذخیره می کنند و از درخواست مکرر از کاربر اجتناب می کنند.
sessionStorage:
• تعریف: مشابه LocalStorage، اما با تداوم محدود به جلسه مرور فعلی.
• ذخیره سازی: انحصاری در مرورگر کاربر. با هر درخواست HTTP ارسال نمی شود. هر برگه sessionStorage مستقل خود را دارد.
• مدت زمان: فقط در طول جلسه مرور ادامه دارد. وقتی برگه یا پنجره را ببندید حذف می شود.
• ظرفیت: مشابه LocalStorage (5 تا 10 مگابایت).
• استفاده: برای ذخیره داده های موقتی که فقط باید در طول جلسه مرور فعلی وجود داشته باشند، مانند فرم های نیمه تکمیل شده مفید است.
امنیت و دسترسی ذخیره سازی:
داده های موجود در localStorage، sessionStorage و کوکی ها را می توان از کنسول مرورگر مشاهده و دستکاری کرد، بنابراین توصیه نمی شود اطلاعات حساس را در آنها ذخیره کنید.
نحوه استفاده از localStorage و sessionStorage:
هم localStorage و هم sessionStorage اشیایی در متغیر پنجره جهانی جاوا اسکریپت هستند. هر دو داده ها را در جفت های کلید-مقدار ذخیره می کنند، جایی که کلیدها و مقادیر هر دو رشته هستند.
1. ذخیره داده ها:
localStorage.setItem('key', 'value');
sessionStorage.setItem('key', 'value');
2. دریافت داده:
const value = localStorage.getItem('key');
const value = sessionStorage.getItem('key');
3. حذف داده ها:
localStorage.removeItem('key');
sessionStorage.removeItem('key');
4. تمام داده ها را حذف کنید:
localStorage.clear();
sessionStorage.clear();
مثال: