021-88881776

آموزش کار با Local Storage و Session Storage در JavaScript

در این آموزش JavaScript، به شما نشان خواهیم داد که چگونه می‌توانید با استفاده از Local Storage و Session Storage داده‌ها را در مرورگر ذخیره کنید. ذخیره‌سازی داده‌ها در مرورگر این امکان را به توسعه‌دهندگان می‌دهد تا داده‌های کاربران را بدون نیاز به سرور نگهداری کنند و تجربه کاربری بهتری را ارائه دهند. کار با Local Storage و Session Storage در JavaScript از مباحث اساسی و کاربردی برای ساخت اپلیکیشن‌های تحت وب است.

دسترسی به Local Storage و Session Storage

در JavaScript، دو نوع حافظه ذخیره‌سازی در مرورگر وجود دارد که به ما امکان ذخیره داده‌های مختلف و بازیابی آن‌ها در جلسه‌های مختلف را می‌دهند: Local Storage و Session Storage. در این بخش، با Local Storage آشنا می‌شویم که امکان ذخیره‌سازی دائمی داده‌ها را فراهم می‌کند.

Local Storage

Local Storage در واقع یک فضای ذخیره‌سازی داده‌ها در مرورگر است که به اپلیکیشن‌های تحت وب امکان می‌دهد داده‌ها را به صورت دائمی در دستگاه کاربر نگه دارند. تفاوت اصلی آن با کوکی‌ها و دیگر روش‌های ذخیره‌سازی در این است که داده‌های ذخیره‌شده در Local Storage تنها در مرورگر و برای دامنه‌ای که آن‌ها را ذخیره کرده است در دسترس‌اند و به سرور ارسال نمی‌شوند. برخی از ویژگی‌های مهم Local Storage به شرح زیر است:

حجم ذخیره‌سازی بزرگ‌تر: نسبت به کوکی‌ها، که محدود به چند کیلوبایت هستند، Local Storage ظرفیت بیشتری برای ذخیره‌سازی داده‌ها (معمولاً حدود 5 تا 10 مگابایت) فراهم می‌کند.
پایداری داده‌ها: داده‌ها در Local Storage حتی پس از بستن و باز کردن مجدد مرورگر هم در دسترس می‌مانند. این بدین معنی است که داده‌ها دائمی هستند، مگر آنکه کاربر آن‌ها را به صورت دستی پاک کند یا کد شما دستور به حذف آن‌ها دهد.
دسترسی محدود به دامنه: داده‌های ذخیره شده در Local Storage تنها برای همان دامنه (و پروتکل) در دسترس هستند، و دیگر سایت‌ها نمی‌توانند به این داده‌ها دسترسی داشته باشند.

نحوه استفاده از Local Storage

استفاده از Local Storage در JavaScript بسیار ساده است و با استفاده از متدهای زیر می‌توانید داده‌ها را ذخیره، بازیابی و حذف کنید:

ذخیره‌سازی یک داده: برای ذخیره داده در Local Storage از متد setItem استفاده می‌شود. این متد دو پارامتر می‌گیرد: نام کلید (key) و مقدار داده (value) که باید به صورت رشته‌ای (string) ذخیره شود.

localStorage.setItem('username', 'JohnDoe');

در این مثال، کلید username و مقدار JohnDoe در Local Storage ذخیره می‌شوند.

دریافت داده: برای دریافت داده‌ی ذخیره‌شده در Local Storage، از متد getItem استفاده می‌شود. این متد تنها یک پارامتر که همان نام کلید است، می‌پذیرد.

let username = localStorage.getItem('username');
console.log(username); // خروجی: JohnDoe

اگر کلید داده‌شده موجود نباشد، getItem مقدار null را برمی‌گرداند.

حذف داده: برای حذف یک آیتم خاص از Local Storage، از متد removeItem استفاده می‌کنیم. این متد نیز تنها یک پارامتر که همان کلید مورد نظر است، می‌گیرد.

localStorage.removeItem('username');

این کد آیتمی که کلید username دارد را از Local Storage حذف می‌کند.

پاک کردن تمام داده‌ها: برای پاک‌سازی کامل Local Storage و حذف تمامی داده‌های ذخیره‌شده، از متد clear استفاده می‌شود. این متد هیچ پارامتری نمی‌گیرد و تمام داده‌ها را از Local Storage حذف می‌کند.

localStorage.clear();

پس از اجرای این کد، Local Storage خالی می‌شود و هیچ داده‌ای در آن باقی نمی‌ماند.

نکات مهم در کار با Local Storage

ذخیره داده‌ها به صورت رشته‌ای: Local Storage تنها می‌تواند رشته‌ها (string) را ذخیره کند. بنابراین اگر قصد ذخیره‌سازی یک آبجکت را دارید، باید آن را به فرمت JSON تبدیل کنید. برای این کار می‌توانید از متد JSON.stringify استفاده کنید و برای بازیابی مجدد از JSON.parse استفاده کنید.

let user = { name: 'John', age: 30 };
localStorage.setItem('user', JSON.stringify(user));

let retrievedUser = JSON.parse(localStorage.getItem('user'));
console.log(retrievedUser.name); // خروجی: John

امنیت داده‌ها: Local Storage به طور کلی امن نیست و بهتر است اطلاعات حساس مانند رمز عبور را در آن ذخیره نکنید، زیرا داده‌ها به راحتی از طریق ابزارهای مرورگر در دسترس‌اند.

محدودیت حجم: همان‌طور که گفته شد، Local Storage محدود به چند مگابایت است و در صورت پر شدن، دیگر نمی‌توان داده‌ای ذخیره کرد.

Session Storage

Session Storage یکی از ابزارهای ذخیره‌سازی سمت کاربر است که امکان نگهداری داده‌های موقتی را تا زمانی که تب مرورگر باز است، فراهم می‌کند. Session Storage مشابه Local Storage عمل می‌کند، با این تفاوت که داده‌های ذخیره‌شده در آن با بستن تب یا پنجره مرورگر از بین می‌روند. این ویژگی Session Storage را به گزینه‌ای مناسب برای نگهداری داده‌هایی که تنها در همان جلسه (session) مرورگر نیاز هستند تبدیل می‌کند. در ادامه، توضیحات بیشتری درباره استفاده‌ها و ویژگی‌های این نوع ذخیره‌سازی ارائه شده است.

ویژگی‌های Session Storage

Session Storage چند ویژگی متمایز دارد که آن را از Local Storage و سایر روش‌های ذخیره‌سازی متمایز می‌کند:

پایداری محدود به یک جلسه مرورگر: داده‌های ذخیره‌شده در Session Storage تنها تا زمانی که تب یا پنجره مرورگر باز است، نگهداری می‌شوند. به محض بستن تب، داده‌ها از بین می‌روند. این قابلیت باعث می‌شود Session Storage برای نگهداری داده‌هایی که فقط در همان جلسه خاص نیاز هستند، مناسب باشد، مانند اطلاعاتی که در فرم‌های چندمرحله‌ای یا صفحات موقت نیاز به ذخیره‌سازی دارند.

دسترسی محدود به تب یا پنجره جاری: Session Storage برای هر تب مرورگر جداگانه است. یعنی اگر کاربر یک وب‌سایت را در چندین تب باز کند، هر تب دارای یک نسخه مجزای Session Storage خواهد بود که به داده‌های تب دیگر دسترسی ندارد. این ویژگی، Session Storage را برای کاربردهایی که نیاز به ایزوله کردن داده‌ها در تب‌های مختلف دارند، مناسب می‌سازد.

امنیت بالاتر نسبت به کوکی‌ها برای داده‌های موقت: داده‌های ذخیره‌شده در Session Storage به سرور ارسال نمی‌شوند (برخلاف کوکی‌ها که ممکن است در هر درخواست HTTP همراه شوند)، بنابراین از منظر امنیتی برای ذخیره داده‌های موقتی و غیر حساس می‌تواند انتخاب مناسبی باشد.

نحوه استفاده از Session Storage

استفاده از Session Storage در JavaScript بسیار ساده است و متدهای آن مشابه Local Storage هستند:

ذخیره‌سازی یک داده: برای ذخیره یک داده در Session Storage از متد setItem استفاده می‌شود. این متد دو پارامتر می‌گیرد: کلید (key) و مقدار (value) که باید به صورت رشته (string) باشد.

sessionStorage.setItem('sessionKey', 'sessionValue');

در این مثال، کلید sessionKey و مقدار sessionValue در Session Storage ذخیره می‌شوند.

دریافت داده: برای دریافت یک داده ذخیره‌شده، از متد getItem استفاده می‌شود. این متد کلید داده را به عنوان پارامتر می‌گیرد و مقدار آن را بازمی‌گرداند.

let sessionData = sessionStorage.getItem('sessionKey');
console.log(sessionData); // خروجی: sessionValue

اگر کلید مورد نظر موجود نباشد، getItem مقدار null را برمی‌گرداند.

حذف یک داده خاص: برای حذف یک آیتم از Session Storage، از متد removeItem استفاده می‌شود. این متد کلید داده را به عنوان پارامتر دریافت می‌کند.

sessionStorage.removeItem('sessionKey');

این کد، داده‌ای که کلید sessionKey دارد را از Session Storage حذف می‌کند.

پاک کردن تمام داده‌ها: برای پاک‌سازی کامل Session Storage و حذف تمام داده‌ها، از متد clear استفاده می‌شود. این متد تمامی داده‌های Session Storage را حذف می‌کند.

sessionStorage.clear();

 

پس از اجرای این کد، Session Storage کاملاً خالی می‌شود.

کاربردهای Session Storage

حفظ وضعیت رابط کاربری: برای مثال، در یک وب‌سایت خرید آنلاین، می‌توان داده‌های موقتی مانند اطلاعات فرم کاربر را در Session Storage ذخیره کرد تا در صورتی که کاربر در همان تب بخواهد به صفحه دیگری برود، پس از بازگشت، این داده‌ها دوباره قابل دسترسی باشند.

ذخیره اطلاعات موقت بین صفحات: در برنامه‌های وب تک‌صفحه‌ای یا چندمرحله‌ای، Session Storage می‌تواند برای ذخیره‌سازی اطلاعات بین مراحل استفاده شود. به عنوان مثال، در فرم‌های چندمرحله‌ای که پس از کامل کردن هر مرحله کاربر باید اطلاعات را وارد کند، می‌توان اطلاعات مراحل را در Session Storage ذخیره کرد تا در همان تب نگهداری شوند.

ایزوله کردن داده‌ها در تب‌های مختلف: در مواردی که کاربر یک برنامه وب را در چندین تب باز کرده است، می‌توان با استفاده از Session Storage، داده‌های هر تب را جداگانه نگهداری کرد.

نکات مهم در استفاده از Session Storage

ذخیره داده‌ها به صورت رشته‌ای: Session Storage تنها رشته‌ها (string) را ذخیره می‌کند. اگر می‌خواهید یک آبجکت یا آرایه را ذخیره کنید، باید ابتدا آن را به فرمت JSON تبدیل کنید و سپس برای بازیابی از JSON.parse استفاده کنید.

let user = { name: 'Jane', age: 25 };
sessionStorage.setItem('user', JSON.stringify(user));

let retrievedUser = JSON.parse(sessionStorage.getItem('user'));
console.log(retrievedUser.name); // خروجی: Jane

محدودیت‌های حجم: اگرچه Session Storage نسبت به کوکی‌ها فضای بیشتری دارد، اما معمولاً فضای آن به چند مگابایت محدود می‌شود. برای ذخیره داده‌های بزرگ، Session Storage مناسب نیست.

عدم مناسب بودن برای داده‌های حساس: از آنجایی که داده‌های Session Storage به راحتی توسط ابزارهای مرورگر قابل مشاهده هستند، ذخیره‌سازی اطلاعات حساس مانند رمز عبور در آن توصیه نمی‌شود.

استفاده از کوکی‌ها

کوکی‌ها یکی از روش‌های قدیمی و پرکاربرد برای ذخیره‌سازی داده در مرورگر هستند. کوکی‌ها امکان ذخیره اطلاعات کوچک و ساده‌ای را فراهم می‌کنند که می‌تواند بین مرورگر و سرور به اشتراک گذاشته شود. برخلاف Local Storage و Session Storage که تنها در سمت کلاینت و مرورگر ذخیره می‌شوند، کوکی‌ها می‌توانند به طور خودکار در درخواست‌های HTTP به سرور ارسال شوند، که آن‌ها را به گزینه‌ای ایده‌آل برای اطلاعاتی که به سرور وابسته است، مانند وضعیت لاگین کاربران، تبدیل می‌کند.

ویژگی‌های کوکی‌ها

اندازه محدود: کوکی‌ها معمولاً فقط چند کیلوبایت (در حدود 4 کیلوبایت) داده را ذخیره می‌کنند. این محدودیت باعث می‌شود که کوکی‌ها بیشتر برای ذخیره داده‌های کم حجم مانند اطلاعات کاربر و تنظیمات اولیه استفاده شوند.

همه‌گیری بین مرورگر و سرور: یکی از ویژگی‌های مهم کوکی‌ها این است که داده‌های ذخیره‌شده در آن‌ها می‌توانند به طور خودکار به سرور ارسال شوند. هر بار که مرورگر یک درخواست HTTP به سرور ارسال می‌کند، کوکی‌ها نیز به همراه درخواست فرستاده می‌شوند، مگر اینکه به صورت خاص برای عدم ارسال آن‌ها تنظیم شده باشند.

امکان تنظیم تاریخ انقضا: هر کوکی می‌تواند با تاریخ انقضای مشخص تنظیم شود. زمانی که کوکی منقضی می‌شود، به طور خودکار از مرورگر حذف می‌شود. با تنظیم تاریخ انقضا، می‌توان کوکی‌ها را برای ذخیره داده به مدت زمان مشخصی نگهداری کرد.

قابلیت محدود کردن دسترسی: کوکی‌ها می‌توانند به دامنه‌ها و مسیرهای خاصی محدود شوند و فقط برای درخواست‌های امن (با استفاده از HTTPS) ارسال شوند. این ویژگی‌ها به امنیت داده‌های ذخیره‌شده کمک می‌کنند.

امنیت و محدودیت‌ها: از آنجا که کوکی‌ها می‌توانند به سرور ارسال شوند، باید از ذخیره داده‌های حساس مانند رمز عبور خودداری کرد، مگر آنکه کوکی به صورت امن (با استفاده از Secure و HttpOnly) تنظیم شود.

نحوه استفاده از کوکی‌ها در JavaScript

کوکی‌ها را می‌توان به راحتی در JavaScript ایجاد، دریافت و حذف کرد. با استفاده از document.cookie می‌توان عملیات مختلفی را بر روی کوکی‌ها انجام داد.

ایجاد یک کوکی
برای ایجاد یک کوکی در JavaScript، از document.cookie استفاده می‌شود. قالب کلی تنظیم کوکی به شکل زیر است:

document.cookie = "key=value; expires=DATE; path=PATH; domain=DOMAIN; secure; samesite=SameSite";

در ادامه، به توضیح بخش‌های مختلف آن می‌پردازیم:

نام و مقدار کوکی (key=value): اولین بخش کوکی، نام و مقدار آن است. این بخش به مرورگر می‌گوید که چه اطلاعاتی را با چه نامی ذخیره کند.

تاریخ انقضا (expires): تاریخ انقضا مشخص می‌کند که کوکی تا چه زمانی در مرورگر باقی بماند. اگر تاریخ انقضا تنظیم نشود، کوکی به عنوان کوکی جلسه ذخیره می‌شود و تنها تا زمانی که مرورگر باز است، در دسترس خواهد بود. به عنوان مثال:

document.cookie = "username=John; expires=Thu, 18 Dec 2024 12:00:00 UTC";

در این مثال، کوکی با نام username و مقدار John تا تاریخ 18 دسامبر 2024 در مرورگر ذخیره می‌شود و پس از آن حذف خواهد شد.

مسیر (path): با تنظیم مسیر، می‌توان مشخص کرد که کوکی در چه بخش‌هایی از وب‌سایت معتبر باشد. اگر مسیر تنظیم نشود، کوکی فقط در مسیری که در آن تنظیم شده، در دسترس خواهد بود. برای مثال:

document.cookie = "username=John; path=/";

این کد، کوکی را در کل وب‌سایت در دسترس قرار می‌دهد.

دامنه (domain): دامنه مشخص می‌کند که کوکی به کدام دامنه‌ها تعلق دارد. به طور معمول، کوکی‌ها تنها برای دامنه‌ای که آن‌ها را تنظیم کرده‌اند، در دسترس هستند.

تنظیمات امنیتی (Secure و SameSite)

Secure: اگر Secure تنظیم شده باشد، کوکی تنها در اتصال‌های امن (HTTPS) ارسال می‌شود.
SameSite: با استفاده از این تنظیم می‌توان مشخص کرد که کوکی فقط در درخواست‌هایی که از همان سایت آمده‌اند، ارسال شود (با مقدار Strict)، یا اینکه در درخواست‌های از سایت‌های دیگر هم ارسال شود (با مقدار Lax). این تنظیم به جلوگیری از حملات Cross-Site Request Forgery (CSRF) کمک می‌کند.

دسترسی به کوکی‌ها

دسترسی به کوکی‌ها در JavaScript به سادگی انجام می‌شود، اما چالش اصلی این است که تمام کوکی‌های ذخیره‌شده به صورت یک رشته بلند که شامل تمام کوکی‌هاست، در document.cookie ذخیره می‌شوند. برای دسترسی به مقدار یک کوکی خاص، باید این رشته را پردازش کنیم.

مثال:

function getCookie(name) {
    let cookieArr = document.cookie.split(';');
    for (let cookie of cookieArr) {
        let cookiePair = cookie.split('=');
        if (name == cookiePair[0].trim()) {
            return cookiePair[1];
        }
    }
    return null;
}

let username = getCookie('username');
console.log(username); // خروجی: John

این تابع، یک نام کوکی را دریافت کرده و مقدار آن را بازمی‌گرداند. اگر کوکی مورد نظر وجود نداشته باشد، null برگردانده می‌شود.

حذف یک کوکی

برای حذف یک کوکی در JavaScript، باید تاریخ انقضای آن را به تاریخی در گذشته تنظیم کنید. به عنوان مثال:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

این کد، کوکی با نام username را حذف می‌کند.

کاربردهای کوکی‌ها

کوکی‌ها معمولاً در زمینه‌های زیر استفاده می‌شوند:

مدیریت نشست‌ها: کوکی‌ها می‌توانند به عنوان راهی برای نگهداری اطلاعات ورود و خروج کاربران استفاده شوند. پس از ورود کاربر به سیستم، سرور یک کوکی نشست برای کاربر ایجاد می‌کند و در هر درخواست بعدی، این کوکی به سرور ارسال می‌شود تا وضعیت ورود کاربر شناسایی شود.

ذخیره‌سازی تنظیمات کاربر: کوکی‌ها به وب‌سایت‌ها این امکان را می‌دهند تا تنظیمات خاصی که کاربر انتخاب کرده است، مانند زبان سایت یا تم، را ذخیره کنند. این داده‌ها هنگام بازدید مجدد کاربر از سایت به سرور ارسال شده و تنظیمات مطابق با سلیقه کاربر بارگذاری می‌شوند.

پیگیری فعالیت کاربران: با استفاده از کوکی‌ها، می‌توان اطلاعات مربوط به فعالیت‌های کاربران در وب‌سایت را ردیابی کرد. این کار در تحلیل‌های آماری و بهینه‌سازی تجربه کاربری مؤثر است. البته باید به حریم خصوصی کاربران نیز توجه کرد و این نوع استفاده معمولاً نیاز به رضایت کاربر دارد.

نکات امنیتی مهم در استفاده از کوکی‌ها

HttpOnly: برای جلوگیری از دسترسی JavaScript به کوکی‌های حساس (مانند کوکی‌های نشست)، می‌توان از ویژگی HttpOnly استفاده کرد. کوکی‌هایی که با HttpOnly تنظیم شده‌اند، تنها برای سرور قابل دسترسی هستند و JavaScript نمی‌تواند به آنها دسترسی پیدا کند.

Secure: برای محافظت از کوکی‌ها در برابر حملات شنود، باید کوکی‌های حساس را تنها در اتصال‌های امن (HTTPS) ارسال کرد. این کار با استفاده از ویژگی Secure انجام می‌شود.

SameSite: با تنظیم ویژگی SameSite می‌توان از ارسال کوکی‌ها به درخواست‌هایی که از سایت‌های دیگر آمده‌اند، جلوگیری کرد و بدین ترتیب از حملات CSRF جلوگیری نمود.

استفاده بهینه و آگاهانه از کوکی‌ها به شما کمک می‌کند تا تجربه بهتری برای کاربران ایجاد کنید و همزمان از امنیت اطلاعات آنها نیز محافظت کنید.

بررسی ذخیره‌سازی داده در مرورگر

ذخیره‌سازی داده‌ها در مرورگر یکی از ویژگی‌های مهم و کاربردی HTML5 است که به توسعه‌دهندگان وب امکان می‌دهد داده‌ها را در سمت کاربر ذخیره کرده و تجربه کاربری بهتری ارائه دهند. سه روش اصلی برای ذخیره‌سازی داده‌ها در مرورگر وجود دارد: Local Storage، Session Storage و کوکی‌ها. هر کدام از این روش‌ها ویژگی‌ها، مزایا و محدودیت‌های خود را دارند و انتخاب هر کدام بستگی به نیاز پروژه و نوع داده‌هایی که باید ذخیره شوند، دارد.

تفاوت‌های اصلی بین Local Storage، Session Storage و کوکی‌ها

تفاوت اصلی بین Local Storage، Session Storage و کوکی‌ها در مدت زمان نگهداری داده‌ها، دسترسی به داده‌ها و امکان ارسال داده‌ها به سرور است. در ادامه، تفاوت‌های این سه نوع ذخیره‌سازی را با جزئیات بیشتری بررسی می‌کنیم:

1. مدت زمان نگهداری داده‌ها

Local Storage: داده‌های ذخیره‌شده در Local Storage دائمی هستند و حتی پس از بستن و باز کردن مجدد مرورگر باقی می‌مانند. این داده‌ها تنها در صورتی حذف می‌شوند که کاربر به صورت دستی آنها را پاک کند یا کد JavaScript مخصوصی اجرا شود تا داده‌ها را حذف کند. به همین دلیل، Local Storage برای نگهداری داده‌هایی که نیاز به ماندگاری طولانی‌مدت دارند، مناسب است.

Session Storage: داده‌های ذخیره‌شده در Session Storage تنها تا زمانی که تب یا پنجره مرورگر باز است، نگهداری می‌شوند. به محض بستن تب یا پنجره، داده‌ها به صورت خودکار حذف می‌شوند. Session Storage برای ذخیره داده‌های موقتی که تنها در طول یک جلسه کاربر نیاز هستند، مناسب است، مانند ذخیره اطلاعاتی که برای پردازش در همان تب و بدون نیاز به ماندگاری طولانی لازم است.

کوکی‌ها: کوکی‌ها می‌توانند هم به صورت موقت و هم دائمی باشند. با تنظیم تاریخ انقضا، می‌توان مدت زمان نگهداری کوکی را مشخص کرد. کوکی‌هایی که تاریخ انقضا ندارند، تنها تا زمان بسته شدن مرورگر معتبر هستند، در حالی که کوکی‌های دارای تاریخ انقضا می‌توانند مدت زمان طولانی‌تری ذخیره شوند.

2. دسترسی و قابلیت به اشتراک‌گذاری داده‌ها

Local Storage و Session Storage: این دو نوع ذخیره‌سازی تنها در مرورگر و برای دامنه (وب‌سایت) خاصی که داده‌ها را ذخیره کرده است، در دسترس هستند. این بدین معنی است که داده‌های Local Storage و Session Storage از طریق JavaScript در همان وب‌سایت قابل دسترسی‌اند و توسط دامنه‌های دیگر در دسترس نیستند. به دلیل این محدودیت، Local Storage و Session Storage مناسب برای داده‌های مخصوص همان وب‌سایت هستند.

کوکی‌ها: کوکی‌ها به دلیل قابلیت ارسال به سرور در هر درخواست HTTP، می‌توانند در وب‌سایت‌ها و سرورها به اشتراک گذاشته شوند. این ویژگی کوکی‌ها را به ابزاری مناسب برای ذخیره‌سازی داده‌هایی تبدیل می‌کند که نیاز به ارسال خودکار به سرور دارند، مانند اطلاعات ورود کاربر. به علاوه، کوکی‌ها می‌توانند با تنظیمات خاص به دامنه‌ها و مسیرهای مشخص محدود شوند و همچنین قابلیت استفاده در پروتکل‌های امن (HTTPS) را دارند.

3. حجم ذخیره‌سازی

Local Storage و Session Storage: هر دو نوع این ذخیره‌سازی‌ها معمولاً حدود 5 تا 10 مگابایت فضا دارند. این حجم بیشتر از فضای در دسترس کوکی‌ها است و امکان ذخیره داده‌های بیشتری را فراهم می‌کند. بنابراین، Local Storage و Session Storage برای داده‌های غیر حساس با حجم بالا مناسب‌تر هستند.

کوکی‌ها: محدودیت حجم کوکی‌ها به طور کلی حدود 4 کیلوبایت است. این محدودیت باعث می‌شود که کوکی‌ها برای ذخیره داده‌های کوچک مانند تنظیمات کاربر، زبان ترجیحی، یا اطلاعات نشست کاربر استفاده شوند. در صورت نیاز به ذخیره داده‌های حجیم‌تر، استفاده از کوکی‌ها مناسب نیست.

4. امنیت و امکان حملات

Local Storage و Session Storage: این دو روش ذخیره‌سازی به طور پیش‌فرض به سرور ارسال نمی‌شوند و فقط در مرورگر در دسترس هستند. این ویژگی باعث می‌شود که داده‌های حساس، به شرط عدم دسترسی از طریق JavaScript ناامن، به شکل امن‌تری در این فضا ذخیره شوند. با این حال، این داده‌ها توسط JavaScript قابل دسترسی هستند و می‌توانند در صورت وجود کدهای مخرب در صفحه به سرقت بروند. به همین دلیل، بهتر است داده‌های حساس مانند رمز عبور در Local Storage و Session Storage نگهداری نشوند.

کوکی‌ها: کوکی‌ها به دلیل ارسال در هر درخواست HTTP و امکان خوانده شدن توسط سرور، مستعد حملات مانند Cross-Site Scripting (XSS) و Cross-Site Request Forgery (CSRF) هستند. برای کاهش خطرات امنیتی، توصیه می‌شود که برای داده‌های حساس از ویژگی‌های Secure و HttpOnly در کوکی‌ها استفاده کنید. Secure از ارسال کوکی‌ها در اتصال‌های غیر امن (HTTP) جلوگیری می‌کند و HttpOnly دسترسی JavaScript به کوکی را مسدود می‌سازد.

جمع‌بندی و کاربردهای مناسب هر نوع ذخیره‌سازی

1. Local Storage – مناسب برای داده‌های دائمی و پرحجم که نیازی به ارسال به سرور ندارند.
کاربردهای رایج: ذخیره‌سازی تنظیمات کاربر، داده‌های دائمی رابط کاربری، اطلاعات فرم‌هایی که کاربر می‌خواهد در بازدیدهای بعدی نیز در دسترس باشند.
2. Session Storage – مناسب برای داده‌های موقتی و بدون نیاز به ماندگاری بلندمدت که در یک تب یا جلسه استفاده می‌شوند.
کاربردهای رایج: ذخیره اطلاعات موقت در فرم‌های چندمرحله‌ای، داده‌های مخصوص یک جلسه کاری در همان تب، حفظ اطلاعات موقتی کاربر.
3. کوکی‌ها – مناسب برای ذخیره داده‌های کوچک و حساس که نیاز به ارسال به سرور دارند.
کاربردهای رایج: مدیریت نشست کاربر، نگهداری توکن‌های تأیید هویت، ذخیره‌سازی تنظیمات کاربر که باید به سرور ارسال شوند.

انتخاب نوع ذخیره‌سازی مناسب در پروژه‌ها

انتخاب صحیح نوع ذخیره‌سازی در پروژه‌ها به میزان زیادی به نیازهای امنیتی، نوع و حجم داده‌ها و مدت زمان نگهداری آن‌ها بستگی دارد. به طور کلی، اگر داده‌ها باید به طور موقت و در همان جلسه کاربر ذخیره شوند، Session Storage گزینه مناسبی است. اگر داده‌ها دائمی هستند و به سرور نیاز ندارند، Local Storage انتخاب خوبی است. در صورتی که داده‌ها باید به سرور ارسال شوند، مانند اطلاعات ورود کاربر، کوکی‌ها مناسب‌تر خواهند بود.

نتیجه‌گیری

در این مقاله، انواع روش‌های ذخیره‌سازی داده در مرورگر یعنی Local Storage، Session Storage و کوکی‌ها را مورد بررسی قرار دادیم و به تفاوت‌های کلیدی آن‌ها پرداختیم. هر کدام از این روش‌ها برای نیازهای مختلفی طراحی شده‌اند و انتخاب صحیح بین آن‌ها می‌تواند به بهبود عملکرد و امنیت برنامه‌های وب کمک کند.

Local Storage برای ذخیره داده‌هایی که به ماندگاری طولانی نیاز دارند، مانند تنظیمات کاربر، انتخاب مناسبی است.
Session Storage برای داده‌های موقتی و مخصوص هر جلسه، مانند اطلاعات فرم‌های چندمرحله‌ای، ایده‌آل است.
کوکی‌ها برای داده‌های کوچکی که باید به سرور ارسال شوند، مانند توکن‌های احراز هویت، کاربرد دارند و قابلیت تنظیم امنیتی بیشتری نیز دارند.
در نهایت، استفاده آگاهانه از هر کدام از این ابزارها، نه تنها موجب بهبود تجربه کاربری می‌شود، بلکه باعث می‌شود امنیت داده‌های کاربران نیز بهتر حفظ شود. توسعه‌دهندگان با توجه به نیازهای پروژه می‌توانند به طور بهینه از این روش‌ها بهره بگیرند و اپلیکیشن‌های وب خود را امن‌تر و کارآمدتر سازند.

آموزش کار با Local Storage و Session Storage در JavaScript

دیدگاه های شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *