Privacy در دنیای وب (بخش دوم)

Privacy در دنیای وب (بخش دوم)

در قسمت اول این مقاله تحت عنوان Privacy در دنیای وب (بخش اول) با نگاهی عمیق به ساختار وب سعی کردیم سازوکار پروتکل HTTP را تشریح کنیم و دیدیم که از کلاینت تا سرور چه فرایندی طی می‌شود تا یک صفحۀ سادۀ وب در مرورگر کلاینت باز شود و با این مقدمه قرار شد تا به صورت فنی‌تری به مقولۀ Privacy (حریم خصوصی) در وب نگاه کنیم. حال در بخش دوم قصد داریم تا به بررسی مواردی همچون رفتار مرورگرها، کوکی‌ها و ... بپردازیم که تأثیر مستقیمی بر میزان حریم خصوصی ما در فضای سایبری دارند.

سرور از کلاینت چه می‌داند؟
در بخش قبلی مقاله دیدیم که درخواست کاربر به صورت یک HTTP Request به سمت سرور ارسال می‌شود و در بخش‌های Header و Body، مرورگر اطلاعاتی را به سمت سرور ارسال می‌کند. این اطلاعات به صورت دقیق شامل موارد زیر می‌شوند:

- IP Address: آدرس آی‌پی کلاینت اولین دیتای مهمی است که سرور از کلاینت می‌داند و همان‌طور که در بخش قبل گفته شد، این آدرس در واقع Public IP Address می‌باشد که از طریق آن می‌توان کشور، شهر و حتی حدود محدودۀ جفرافیای کلاینت را پیدا کرد (Public IP Address در واقع محل دقیق ISP شما را مشخص می‌کند.)

- Referrer: دیتای مهم بعدی که برای سرور فرستاده می‌شود، Referrer نام دارد و بیانگر آن است که کلاینت از طریق چه لینکی، پیج فعلی را باز کرده و درخواست را برای سرور ارسال کرده است که البته این در حالی است چنانچه شما مستقیماً لینک را در قسمت Address Bar مرورگر خود تایپ کرده و اینتر کرده باشید، مقداری برابر با Null برای ارجاع‌دهنده یا به عبارتی Referrer در نظر گرفته خواهد شد.

- User Agent: یکی از مهم‌ترین دیتایی که مرورگر به صورت خودکار برای سرور ارسال می‌کند، همین User Agent می‌باشد که در واقع چکیده‌ای از مهم‌ترین اطلاعاتی است که هویت کاربر در فضای مجازی را شکل می‌دهد به طوری که این اطلاعات عبارتند از:

- مرورگر: که شامل نوع و ورژن مرورگر و کلیۀ کانفیگ‌هایی که روی آن وجود دارد می‌شود.
- سیستم‌عامل: که شامل نوع و ورژن OS می‌شود.
- سیستم سخت‌افزاری: که شامل اطلاعاتی از نوع سیستم (موبایل، لپ‌تاپ و ...) و برخی از اطلاعات سخت‌افزاری آن مانند RAM ،CPU و ... می‌شود.

البته لازم به ذکر است که به غیر از موارد فوق، اطلاعات دیگری همچون زبان سیستم، تایم‌زُون، فونت‌های پیش‌فرض و ... نیز توسط مرورگر به سرور ارسال ‌می‌شوند (برای آشنایی با اطلاعاتی که مرورگر در مورد شما می‌داند، توصیه می‌کنیم به مقالهٔ Click: وب‌سایتی که نشان می‌دهد مرورگرتان چه اطلاعاتی در مورد شما دارد! مراجعه نمایید.)

Browser Fingerprint چیست؟
همواره این احتمال وجود دارد وب‌سایت‌هایی که در آن‌ها ثبت‌نام کرده‌اید و با استفاده از اکانت شخصی خود در آن‌ها فعالیت می‌کنید، فعالیت‌های شما را رصد کنند چرا که هویت شما کاملاً مشخص است؛ اما وب‌سایتی شما در آن اکانتی ندارید و اساساً قرار است به صورت Anonymous (ناشناس) در آنجا فعالیت کنید، گاهی برخلاف میل شما می‌خواهد هویت شما را بداند که یکی روش‌های مرسوم استفاده از روش Browser Fingerprint (اثرانگشت مرورگر) است.

اگرچه اطلاعاتی همچون User Agent به نظر می‌رسد که عمومی باشند، اما واقعیت امر آن است که شاید از بین چند میلیون کاربر، فقط و فقط یک نفر باشد که اطلاعاتش دقیقاً با شما منطبق باشد؛ بنابراین سرور از این طریق شما را ردیابی کرده و عملاً Privacy را نقض می‌کند.

جالب است بدانید که از سال 2012 مبحث Browser Fingerprint یک جهش اساسی پیدا کرد به طوری که وب‌سایت‌ها با ظهور HTML5 و با استفاده از تگ <canvas></canvas> از مروگر می‌خواهند که یک تصویر گرافیکی سنگین را رِندر کنند (که عموماً این تصویر مخفی می‌باشد.) و نتیجۀ رِندر در هر سیستم بسته به کانفیگ سخت‌افزاری آن مثل CPU ،GPU ،RAM و ... متفاوت خواهد بود و عملاً از این طریق می‌توانند به جزئیات سخت‌افزاری بیشتری از سیستم شما پی ببرند و بنابراین تضمین بیشتری برای اصطلاحاً Unique (منحصر به فرد) بودن اطلاعاتی که مرورگر می‌فرستد، به دست می‌آورند.

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

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

یکی دیگر از مهم‌ترین کاربردهای کوکی ذخیره‌سازی برخی تنظیمات دلخواهی است که شما قبلاً روی سایت انجام داده‌اید و تمایل ندارید تا هر بار این تنظیمات را از نو انجام دهید. همچنین از دیگر کاربردهای مهم کوکی ذخیره‌سازی یوزرنیم و پسورد شما است که عموماً توسط تیک عبارتی همچون Remember Me (مرا به خاطر بسپار) روی کوکی سِت می‌شوند (لازم به ذکر است که برخی از سایت‌ها بدون در نظر گرفتن گزینهٔ Remember Me، به صورت خودکار اقدام به ذخیرهٔ یوزرنیم و پسورد کاربر روی مرورگرش می‌کنند.)

جالب است بدانید که علاوه بر ذخیره‌سازی این تنظیمات که به نظر می‌آید ضروری و مفید باشند، گاهی وب‌سایت‌ها فعالیت شما را در همان سایت و حتی سایت‌های دیگری که در طول وب‌گردی خود به آن‌ها مراجعه می‌کنید را رصد می‌کنند که به این نوع کوکی‌ها اصطلاحاً Third Party گفته می‌شود که عملاً ناقض Privacy کاربران هستند (یک نوع دیگر از کوکی‌ها که به Super Cookie یا Zombie Cookie معروف‌اند حتی به راحتی از سیستم شما حذف نمی‌شوند و به محض قرارگیری در محل مناسب، اطلاعات وب‌گردی شما را برای مقصد خود ارسال می‌کنند.)

سخن پایانی
تا اینجا در مورد امنیت اطلاعات در بخش کلاینت صحبت کردیم و مواردی همچون Browser Fingerprint و Cookie را مورد بررسی قرار دادیم و دانستیم که در چه مواردی Privacy در حال نفض شدن است اما لازم به ذکر است که حتی بعد از رفع این موارد هم نمی‌توانیم مطمئن باشیم کسی به اطلاعات ما دسترسی پیدا نمی‌کند و یا آزادانه و بدون اینکه حریم خصوصی ما نقض گردد، در حال وب‌گردی هستیم چرا که دیتایی که مابین ما و سرور رد و بدل می‌شود ممکن است توسط شخص دیگری که در بین راه است، به اصطلاح Sniff (شُنود) شود و دلیل چنین مسئله‌ای آن است که به خاطر ارسال دیتا از طریق پروتکل HTTP در قالب یک Plain Text به سمت سرور، هر کسی که اراده کند می‌تواند به راحتی از محتوای آن باخبر شود!

برای رفع چنین مشکلی، نسخه‌‌ای از پروتکل HTTP تحت عنوان HTTPS ابداع شد که ورژنی امن از HTTP است که در مقالۀ بعد در مورد سازوکار پروتکل HTTPS و همچنین باقی راه‌حل‌هایی که می‌توانند از نقض Privacy جلوگیری کنند، صحبت خواهیم کرد. با سکان آکادمی همراه باشید.



محمد طاهری