بایگانی برچسب: s

کوکی در مرورگر چیست و چه اهمیتی دارد؟

کوکیِ مرورگر یکی از مواردی است که همه درباره‌ی آن شنیده‌اند، اما بسیاری نمی‌دانند چه اهمیتی دارد و چرا همه مرورگرها از آن پشتیبانی می‌کنند. چرا تقریبا تمام وب‌سایت‌ها کوکی اختصاصی خود را بر روی دستگاه کاربر ذخیره می‌کنند؟ همراه ما باشید تا با کوکی (Cookie) آشنا شوید.

کوکی (Cookie) هرچند در دنیای واقعی به شیرینی خوشمزه‌ای گفته می‌شود، اما در دنیای کامپیوتر و اینترنت، تعریف متفاوتی دارد. کوکی در واقع بسته‌ای از اطلاعات است که در قالب یک فایل متنی توسط وب‌سایت‌ها بر روی کامپیوتر کاربر ذخیره می‌شود تا از طریق آن کاربر شناسایی شده و مثلا بدون نیاز به ورود نام کاربر و رمز عبور همواره در سایت لاگین باقی بماند. اما کوکی‌ها استفاده‌های مختلفی دارند و علاوه بر مزایا، مسائلی را نیز به همراه دارند.

کوکی چیست؟

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

دلیل وجود کوکی‌ها این است که هر درخواست در پروتکل HTTP از درخواست بعدی مستقل است و سرورها نمی‌توانند درخواست‌های متعدد کاربران را دسته‌بندی کنند. با ذخیره‌ی فایل کوچکی از اطلاعات مربوط به کاربر این مسئله حل می‌شود و درخواست‌های هر کاربر از یکدیگر جدا می‌شوند.

در حالت کلی دو نوع کوکی وجود دارد: کوکی‌هایی که مستقیما به وب‌سایتی که باز کرده‌اید تعلق دارند و از آن‌ها با عنوان first-party Cookie یاد می‌شود و کوکی‌هایی که به واسطه‌ی کدهای جاوااسکریپت و برای ثبت فعالیت‌های کاربر ایجاد می‌شوند و عموما برای سرویس‌های تبلیغاتی مورداستفاده قرار می‌گیرند به این کوکی‌ها third-party Cookie گفته می‌شود.

آیا کوکی‌ها حریم شخصی کاربران را نقض می‌کنند و نباید از آن‌ها استفاده کرد؟

براساس آنچه در ابتدای مقاله خواندید، کوکی‌ها توسط وب‌سایتی که از آن بازدید کرده‌اید ساخته می‌شود و تا وقتی که اطلاعات شخصی خود را در اختیارِ وب‌سایت موردنظر قرار نداده باشید، کوکی‌ها نمی‌توانند به اطلاعات شخصی شما دسترسی داشته باشند.

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

پس اساسا کوکی‌های first-party حریم شخصی کاربران را نقض نمی‌کنند. از سال ۲۰۱۱ اتحادیه اروپا و امریکا قانونی وضع کردند که وب‌سایت‌هایی که به مردم این کشورها سرویس می‌دهند اگر کوکی بر روی کامپیوتر کاربر ذخیره می‌کنند که فعالیت‌های کاربر را تحت‌نظر می‌گیرد، باید پیش از ذخیره‌ی آن از کاربر تایید بگیرند. این موضوع بیشتر مربوط به کوکی‌های third-party است که برای تبلیغات فعالیت‌های کاربر را ردیابی می‌کنند.

شاید شنیده باشید که از کوکی به عنوان ویروس، بدافزار یا پاپ‌آپ یاد می‌شود، آیا کوکی می‌تواند مضر باشد؟

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

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

پس کوکی‌ها به خودی خود نه تنها مضر یا خطرناک نیستند بلکه برای استفاده از امکانات سایت‌ها ضرروی بوده و در تجربه‌ی کاربری تأثیر محسوسی دارند.

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

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

کوکی‌ها برای ورود به اکثر سایت‌ها ضروری هستند

اکثر وب‌سایت‌های دنیا برای لاگین کردن کاربر به سایت به کوکی نیاز دارند و اگر کوکی‌ها را غیرفعال کنید، امکان ورود به سایت وجود نخواهد داشت. البته درنظر داشته باشید که بعضی از فروشگاه‌های اینترنتی، توکن (Token) مربوط به هر کاربر را در آدرس URL ذخیره می‌کنند، اما این کار چندان رایج نیست. به این کوکی‌ها first-Party گفته می‌شود. چراکه این کوکی‌ها متعلق به همان وب‌سایتی است که در حال بازدید از آن هستید.

کوکی‌ها برای تبلیغات و ردیابی کاربران استفاده می‌شوند

بله این موضوع حقیقت دارد. از آنجایی که کوکی‌ها با هر بار باز کردن صفحه اطلاعاتی را به وب‌سایت ارسال می‌کنند، برخی از سیستم‌های تبلیغاتی از آن‌ها استفاده می‌کنند تا تبلیغات هدفمند را برای شما به نمایش درآورند. البته این بدین معنی نیست که سرویس‌های تبلیغاتی می‌توانند درون کوکی‌هایی که شما بازدید کرده‌اید را بخوانند، آن‌ها می‌توانند درون کوکی‌های خود را بخوانند، اما از آنجایی که این سرویس‌های تبلیغاتی بعضا از کدهای جاواسکریپت نیز استفاده می‌کنند می‌توانند URLهای صفحاتی که بازدید کرده‌اید را نیز در اختیار داشته باشند که البته این موضوع نیز به کوکی ارتباطی ندارد. در ایران کمتر سرویس تبلیغاتی وجود دارد که تبلیغات را به صورت هدفمند نمایش دهد، اما بسیاری از سرویس‌های تبلیغاتی خارجی، چنین رفتاری دارند و تبلیغاتی را برای کاربر به نمایش می‌گذارند که حدس می‌زنند برای وی جذاب است. به کوکی‌هایی که توسط سرویس‌های تبلیغاتی ایجاد می‌شوند یا به‌طور کلی به کوکی‌های که توسط خود صفحه‌ای که در حال بازدید از آن هستید ساخته نمی‌شوند، کوکی‌های third-party گفته می‌شود. اکثر مرورگرها قابلیتی را در اختیار شما قرار می‌دهند که به راحتی بتوانید این نوع از کوکی‌ها یا به‌طور کل کوکی‌ها را غیرفعال کنید.

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

منبع: زومیت

آموزش PHP – جلسه شانزدهم: Session و Cookie

ذخیره اطلاعات در متغیرها برای کاربردهای مختلفی در پی‌اچ‌پی در اختیار توسعهدهندگان قرار گرفته است. علاوه بر این با ذخیره داده‌ها در بانک داده MySql آشنا شدید. اما گاهی نیاز به نوع دیگری از ذخیره داده‌ها خواهید داشت. مثلا متغیرهایی که در تمام پروژه در دسترس باشند. از سشن (Session) و کوکی (Cookie) دقیقا به همین منظور در پی‌اچ‌پی استفاده می‌کنیم. در ادامه با ما همراه باشید.

در برنامه‌نویسی وب بسیار پیش می‌آید که شما نیاز به ذخیره اطلاعات در متغیرهایی داشته باشید که در سراسر پروژه در دسترس باشند. در این شرایط می‌توان از Sessionها و Cookieها استفاده کرد. 

تفاوت Session و Cookie در آن است که سشن‌ها در سرور ذخیره می‌شوند ولی کوکی‌ها در دستگاه کاربر ذخیره خواهند شد.

استفاده از Session

برای استفاده از سشن‌ها باید در ابتدای صفحه ابتدا آن را آغاز کنید. کد شروع یک سشن به صورت زیر است:

<?php

session_start();

?>

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

<?php

session_start();

$_SESSION[‘user’] = “mojtaba”;

?>

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

<?php

session_start();

$_SESSION[‘user’] = “mojtaba”;

echo $_SESSION[‘user’];

?>

کد بالا باعث نمایش کلمه mojtaba در مرورگر کاربر می‌شود. اما برای این‌که نوع عملکرد سشن‌ها را بهتر درک کنید، یک مثال ساده می‌زنیم. نرم‌افزار Xampp را مثل همیشه اجرا کنید. حالا در پوشه htdocs یک پوشه به اسم exam ایجاد کرده و در این پوشه نیز دو فایل به نام‌های yek.php و do.php بسازید. فایل yek.php را باز کرده و کد زیر را در آن قرار دهید:

<?php

session_start();

$_SESSION[‘isAdmin’] = true;

$_SESSION[‘username’] = “mehrastan”;

?>

حال فایل را ذخیره کنید و فایل do.php را باز کرده و کدهای زیر را در آن قرار دهید:

<?php

session_start();

if ($_SESSION[‘isAdmin’] == true){

echo “you are admin and your username is $_SESSION[‘username’]”;

}else{

echo “session is not set!”;

}

?>

پس از آغاز سشن، ما دو سشن جدید به نام‌های isAdmin و username را در فایل yek.php ایجاد کردیم و مقدار آن‌ها را به ترتیب true و mehrastan تعیین کردیم. دقت کنید که مقدار سشن isAdmin از نوع Boolean تعیین شده است. حال در فایل do.php پس از اجرای سشن با تابع ()session_start با یک دستور if مقدار سشن isAdmin را بررسی کرده‌ایم که در صورت true بودن پیامی چاپ شود و در این پیام مقدار سشن username نیز به کاربر نمایش داده می‌شود. در غیر اینصورت پیام session is not set به کاربر نمایش داده می‌شود.

همانطور که می‌بینید ما سشن‌ها را در فایل yek.php ایجاد کردیم ولی توانستیم در فایل do.php نیز به آن‌ها دسترسی داشته باشیم.

روش کارکرد کوکی‌ها نیز تقریبا به همین صورت است با این تفاوت که کوکی‌ها در سرور ذخیره نخواهند شد و در عوض در سیستم کاربران ذخیره و در مواقع نیاز از طریق مرورگر فراخوانی می‌شوند. از کوکی‌ها بیشتر به منظور شناسایی کاربران استفاده می‌کنیم. با استفاده از پی‌اچ‌پی می‌توانیم کوکی‌های جدید را ایجاد و مقداردهی و نیز فراخوانی کنیم.

برای تعریف یک کوکی جدید از تابع setcookie استفاده می‌کنیم. به کد زیر دقت کنید:

<?php

setcoockie(name, value, expire, path, domain, secure, httponly);

?>

برخی از ورودی‌های تابع فوق الزامی و برخی دیگر اختیاری هستند. در ادامه به توضیح ورودی‌های این تابع می‌پردازیم.

name: نام کوکی جدید که قصد تعریف آن را داریم

value: مقداری که میخواهیم در کوکی موردنظرمان ذخیره شود

expire: مدت زمانی که کوکی پس از آن منقضی خواهد شد (بر حسب ثانیه)

path: تعیین مسیر ذخیره کوکی در سرور

domain: تعیین این‌که کوکی در چه دامینی در دسترس باشد

secure: تعیین این‌که آیا کوکی فقط در ارتباطات امن در دسترس باشد یا خیر

httponly: اگر این مقدار true باشد کوکی فقط از طریق http در دسترس خواهد بود

در کد زیر یک کوکی جدید به نام name می‌سازیم و مقدار آن را برابر با Mojtaba قرار می‌دهیم. همچنین زمان انقضای این کوکی را ۳۰ روز می‌خواهیم تعیین کنیم و بنابراین ۸۴۰۰۰ ثانیه را در ۳۰ ضرب کرده و نتیجه را برای زمان انقضا در نظر گرفته‌ایم. کاراکتر / به معنای در دسترس بودن کوکی در سراسر دامین است. برای دسترسی به مقدار کوکی همانند سشن‌ها از COOKIE_$ استفاده کرده‌ایم. 

<?php

$value = “Mojtaba”;

setcoockie (“user”, $value, time() + (86400 * 30), ‘/’);

if (isset($_COOKIE[‘user’])

{

    echo “cookie is set and this cookie is: $_COOKIE[‘user’]”;

}

?>

در کد بالا تابع isset را در شرط if بکار برده‌ایم. این تابع بررسی می‌کند که آیا آنچه قصد بررسی‌اش را داریم حاوی مقدار است یا خیر. همچنین تابع time زمان کنونی سرور را برمی‌گرداند.

نکته مهم در مورد استفاده از تابع setcoockie این است که باید حتما پیش از تگ <html> از آن استفاده کنید. مقادر ذخیره شده در کوکی‌ها به صورت رمزنگاری شده درمی‌آیند و هنگام فراخوانی مجددا به صورت خودکار از حالت رمزنگاری شده خارج می‌شوند. با این وجود هیچگاه برای ذخیره‌سازی اطلاعات مهم از کوکی‌ها استفاده نکنید.

از سشن‌ها و کوکی‌ها برای هویت‌سنجی کاربران می‌توان استفاده کرد. تقریبا می‌توان گفت که بیشتر سایت‌هایی که با پی‌اچ‌پی ایجاد شده‌اند، از کوکی و سشن یا ترکیبی از این دو برای بخش ورود کاربران، ورود به بخش مدیریت سیستم و… استفاده می‌کنند.

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

منبع: زومیت