کوکی ها (Cookies) در ASP.NET

کوکی ها یکی از راه های ذخیره اطلاعات کاربر می باشد . توسط کوکی ها شما قادر خواهید بود تا یکسری اطلاعات که به کاربر مربوط می شود را ذخیره کنید ، این اطلاعات می تواند تنظیمات  رنگ و تعیین فونت سایت و ... باشد .


برای آشنایی بیشتر با کوکی ها یک مثال که در همه وب سایت ها رایج است را بیان می کنیم . در اکثر وب سایت ها زمانی که قصد ورود به ناحیه کاربری خود را دارید یه چک باکس با عنوان " من را بخاطر بسپار " دیده اید زمانی که شما آن را انتخاب و وارد ناحیه کاربری میشوید همزمان با ورود یک کوکی با شناسه شما ساخته  می شود و بر روی کامپیوتر کاربر ذخیره می شود و در دفعات بعد چک میکند اگر کوکی بر روی سیستم کاربر موجود باشد و تاریخ انقضای آن تمام نشده باشد دیگر نیازی به وارد کردن اطلاعات برای ورود لازم نمی باشد .
 کوکی ها مانند ViewStat نبوده و در تمام صفحات یک وب سایت در دسترس می باشد به این دلیل که مخصوص یک صفحه نیستند و در سیستم کاربر ذخیره می شوند    و هر سایت هم فقط می تواند به کوکی های خود دسترسی داشته باشد .

کوکی های به صورت فایل های متنی کم حجم از طرف سرور ارسال شده و توسط مرورگر بر روی سیستم کاربر ذخیره می شود .


آیا کوکی برای ذخیره داده امن است ؟


به این سوال نمی توان به طور قطع جواب "بله " یا خیر داد  . هکرها می توانند داده های موجود در کوکی ها را به سرقت ببرند و داده های آن را برای منافع خود دسترکاری کنند .کوکی ها نرم افزار نیستند که به روی آنها برنامه ای مدیریت شده قرار داد و حتی نمی توانند ویروس ها را حمل کنند و توانایی حمل برنامه های مخرب را هم ندارند .


کوکی ها شامل یک نام می باشند زمای که قصد استفاده از کوکی هارا دارید باید یک نام برای آن تعیین کنید و بعد مقادیر مورد نظر خود را درآن قرار دهید . هر کوکی دارای یک زمان انقضا می باشد که باید آن هم در زمان استفاده تعیین کنید .


 استفاده از کوکی :
راه های مختلفی برای استفاده از کوکی ها وجود دارد که در این مقاله به آنها خواهیم پرداخت .


روش اول :
استفاده از کلاس HttpCookies :

HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = TextBox1.Text;
StudentCookies.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(StudentCookies);

در مثال بالا یک کوکی با نام StudentCookies  ایجاد کرده ایم که مقدرا آن TextBox1.Text و زمان انقضای آن یک روز بعد از تولید آن می باشد و در آخر برای ذخیره بر روی سیستم کاربر توسط دستور Response.Cookies.Add()  آن را در سیستم کاربر ذخیره می کنیم .


روش دوم : Response directly

 Response.Cookies["StudentCookies"].Value = TextBox1.Text;
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

در دور روش قبل ما یک کوکی به نام StudentCookies ساختیم و یک مقدار در آن ذخیره کردیم حال اگر بخواهیم در یک کوکی چند مقدار مختلف نگه داری کنیم به صورت زیر عمل می کنیم .


روش سوم : قرار دادن چند مقدار در کوکی :

//Writing Multiple values in single cookie
Response.Cookies["StudentCookies"]["RollNumber"] = TextBox1.Text;
Response.Cookies["StudentCookies"]["FirstName"] = "Abhimanyu";
Response.Cookies["StudentCookies"]["MiddleName"] = "Kumar";
Response.Cookies["StudentCookies"]["LastName"] = "Vatsa";
Response.Cookies["StudentCookies"]["TotalMarks"] = "499";
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

در این حالت یک کوکی ایجاد میکنیم و به هر تعداد که بخواهیم key های به آن اضافه میکنیم .کوکی که در مثال بالا ایجاد کرده ایم  دارای 5 مقدار مختلف می باشد که هر کدام از طریق مقادیر کلید خود در دسترس خواهند بود .

خواندن / دریافت مقادیر کوکی :

در روش های بالا ما از طریق سه روش مختلف کوکی های را ایجاد و در سیستم کاربر ذخیره کردیم حال قصد داریم این اطلاعات ذخیره شده در کوکی ها را بخوانیم .

روش اول :

string roll = Request.Cookies["StudentCookies"].Value; //For First Way

 روش دوم :

string roll = Request.Cookies["StudentCookies"].Value;  //For Second Way

روش سوم :

string roll;
roll = Request.Cookies["StudentCookies"]["RollNumber"];
roll = roll + " " + Request.Cookies["StudentCookies"]["FirstName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["MiddleName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["LastName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["TotalMarks"];
Label1.Text = roll;  

حذف کوکی ها :

تا حالا توانستیم با روش های مختلفی کوکی ها را ایجاد و اطلاعات آنها را بخوانیم ، حال قصد داریم کوکی ها را حذف کنیم . برای حذف یک کوکی بهتر است ابتدا کوکی مورد نظر را چک کرده و در صورت null نبودن اقدام به حذف آن کنیم .

if (Request.Cookies["StudentCookies"] != null)
{
    Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(-1);
    Response.Redirect("Result.aspx");  //to refresh the page
}

 محدودیت های کوکی :

  • اندازه : حداکثر اندازه کوکی ها محدود است به  4096 بایت
  • هر وب سایت مجاز است به 20 کوکی برای ذخیره بر روی سیستم کاربر . در صورتی که بخواهید بیشتر از 20 کوکی را بر روی هر سیستم ذخیره کنید مرورگر به صورت اتوماتیک کوکی های قدیمی تر را حذف خواهد کرد .
  • کاربران می توانند کوکی ها را غیر فعال کنند ، بهتر است  قبل از استفاده از کوکی وضعیت کاربر بررسی شده و به کاربر اعلام کنید تا وضعیت کوکی های خود را فعال کنید .

یکی از property های کلاس HttpCooki ، Domain می باشد که تنظیم مقدار برای آن در صورتی ضروری می باشد که سایت ما دارای subdomain باشد . فروض کنید در سایتی به آدرس hozhan.ir یک کوکی ساخته و آن را در مرورگر کاربر ذخیره کرده ایم ، اگر برای کوکی فوق مقدار domain را تعیین نکرده باشیم و در sub domain سایت فوق (مثلا shop.hozhan.ir) بخواهیم به آن دسترسی داشته باشیم هیچ نتیجه ای نخواهیم گرفت برای اینکه یک کوکی در sub domain های یک سایت هم در دسترس باشد حتما مقدار property ، domain را به صورت زیر مقدار دهی کنید . 

 Request.Cookies["StudentCookies"].Domain = ".yoursite.com";

 

در مواقعی کاربر کوکی های مرورگر خود را غیر فعال می کند و بعضی اوقات خود مرورگر ویژگی قبول کوکی ها را ندارد در این مواقع نیاز است ابتدا مرورگر کاربر از این نظر بررسی شود و در صورت نپذیرفتن کوکی به کاربر پیغام مناسبی نمایش دهید و یا به صفحه ای خاص انتقال دهید . کد های زیر مرورگر کاربر را از نظر پذیرفتن و یا نپذیرفتن کوکی بررسی میکند .

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Browser.Cookies)
    {
        //supports the cookies
    }
    else
    {
        //not supports the cookies
        //redirect user on specific page
        //for this or show messages
    }

توصیه می شود اطلاعات حساس را در کوکی ها ذخیره نکنید . 

دانلود کدهای مربوط به کوکی ها 


توسط : عثمان رحیمی  1 ماه قبل ، پنج شنبه 6 شهریور 1393 ساعت 16:23  0  2917

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط