چگونه Mercado Libre در حال آزمایش Privacy Sandbox برای بهبود حریم خصوصی مشتری است

Mercado Libre پلت فرم تجارت الکترونیک پیشرو در آمریکای لاتین است که در 18 کشور فعالیت می کند. آنها یک زیرساخت دیجیتال پیچیده با بیش از 100 میلیون کاربر فعال و طیف متنوعی از خدمات از جمله بازار، پرداخت (Mercado Pago) و تدارکات دارند.

Mercado Libre دارای بیش از 40 دامنه است که بسیاری از آنها در طول تاریخ به کوکی های شخص ثالث برای فعال کردن ویژگی هایی مانند احراز هویت کاربر بین سایتی و تشخیص تقلب متکی بوده اند.

Mercado Libre کار گسترده‌ای را در شناسایی تجربیات و عملکردهای حیاتی کاربر انجام داده است که ممکن است به کوکی‌های شخص ثالث متکی باشد. تحقیق و اجرای جایگزین‌های کوکی‌های شخص ثالث، از جمله Privacy Sandbox API، به اطمینان از عملکرد ویژگی‌های آن‌ها همانطور که انتظار می‌رود کمک می‌کند و همچنان تجربه مثبتی را به کاربران ارائه می‌دهد، خواه کوکی‌های شخص ثالث در دسترس باشند یا نباشند.

برای آشنایی با سفر Mercado Libre برای کاهش اتکای آنها به کوکی های شخص ثالث و محافظت از حریم خصوصی مشتریان، ادامه مطلب را بخوانید.

Mercado Libre سه جنبه از استفاده از کوکی های شخص ثالث را در نظر گرفت:

  1. آیا Mercado Libre به اشتراک گذاری کوکی بین سایتی بین دامنه های خود متکی است؟
  2. آیا خدماتی که به عنوان شخص ثالث ارائه می کنند به کوکی های شخص ثالث بستگی دارد؟
  3. اگر کوکی‌های شخص ثالث در دسترس نباشند، آیا هیچ یک از خدمات شخص ثالثی که به آنها اعتماد دارند تحت تأثیر قرار می‌گیرد؟

ارزیابی تأثیر استفاده از کوکی های شخص ثالث برای ویژگی های دیجیتالی در این مقیاس نیازمند یک رویکرد هماهنگ است، زیرا واحدهای تجاری زیادی درگیر هستند.

تیم پلت فرم frontend Mercado Libre یک ممیزی تاثیر را رهبری کرد و ارتباطات و پشتیبانی متمرکز را برای سایر تیم ها ارائه کرد. این شامل منابع و آموزش برای اطمینان از درک گسترده شرکت از تغییرات لازم بود تا همه تیم ها بتوانند شیوه های جدید را اتخاذ کنند.

واحدهای تجاری Mercado Libre هر کدام در دامنه های جداگانه ای مانند mercadolibre.com ، mercadopago.com و mercadoshops.com فعالیت می کنند.

با انجام یک ممیزی دقیق، آن‌ها کشف کردند که اشتراک‌گذاری کوکی بین‌سایتی برای تجربیات کاربر در اکوسیستم آن‌ها حیاتی است:

  • احراز هویت کاربر : اختلال بالقوه برای بخشی از 75 میلیون خریدار فعال ماهانه در 18 کشور.
  • تجزیه و تحلیل داخلی : بیش از 4000 تحلیلگر تجاری برای تصمیم گیری به داده های بین سایتی متکی هستند. تاثیر بالقوه بر ردیابی سفر کاربر
  • جلوگیری از تقلب : برای جریان‌های پرداخت ایمن زمانی که کوکی‌های شخص ثالث در دسترس نیستند حیاتی است ( بیش از 50 خرید در ثانیه برای Mercado Libre، 244 تراکنش در ثانیه برای Mercado Pago ).

این تجزیه و تحلیل جامع شامل اطلاعاتی مانند تیم، مالک، تأثیر تجاری، شرح موارد استفاده، رفتار فعلی، شکستگی احتمالی، و راه حل پیشنهادی جعبه ایمنی حریم خصوصی بود.

کوکی های پارتیشن بندی شده در Mercado Libre

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

استفاده از CHIPS برای امکان تشخیص تقلب بدون کوکی های شخص ثالث

چالش

Mercado Libre از کوکی‌های شخص ثالث استفاده می‌کند تا تجربه یکپارچه را برای کاربرانی که به پلتفرم پرداخت خود دسترسی دارند، هم برای پرداخت‌هایی که مستقیماً روی پلتفرم انجام می‌شوند و هم برای ادغام‌های شفافی که از Mercado Pago به عنوان پردازشگر پرداخت استفاده می‌کنند، ارائه دهد. برای مثال، آنها از کوکی‌های شخص ثالث در مکانیسم‌هایی استفاده می‌کنند تا به شناسایی زمان استفاده از کارت اعتباری از دستگاهی که کاربر می‌شناسد کمک کند و در نتیجه از کلاهبرداری کارت اعتباری جلوگیری کند.

اطلاعات دستگاه یکی از سیگنال‌های داده اصلی است که توسط مدل‌های یادگیری ماشینی Mercado Libre برای تصمیم‌گیری در مورد تأیید یا عدم تأیید پرداخت استفاده می‌شود. بنابراین نداشتن این اطلاعات برای تعداد قابل توجهی از کاربران می تواند نشان دهنده ضرر قابل توجهی در نسبت تایید پرداخت آنها باشد.

راه حل

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

در این مورد، CHIPS به Mercado Libre کمک کرد تا از یک تجربه یکپارچه و کارآمد برای بازگشت مشتریان حتی زمانی که کوکی‌های شخص ثالث مسدود هستند، پشتیبانی کند.

غواصی عمیق فنی

رایج ترین روش یکپارچه سازی برای استفاده از Mercado Pago به عنوان یک پردازشگر پرداخت شامل استفاده از جاوا اسکریپت است که هم یک ماژول رمزگذاری داده کارت و هم یک ماژول جلوگیری از تقلب را در خود جای داده است. ماژول پیشگیری از کلاهبرداری از کوکی های شخص ثالث برای پیوند دادن پرداخت ها به دستگاه های کاربران استفاده می کند.

در گذشته، با استفاده از کوکی‌های شخص ثالث، Mercado Pago می‌توانست دستگاه‌های کاربران را در فروشگاه‌ها شناسایی و ردیابی کند، همانطور که در نمودار زیر نشان داده شده است.

طرح Unpartitioned همانطور که توسط Mercado Pago در گذشته استفاده می شد.
طرح Unpartitioned همانطور که توسط Mercado Pago در گذشته استفاده می شد.

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

کوکی های پارتیشن بندی شده، همانطور که اکنون توسط Mercado Libre استفاده می شود.
کوکی های پارتیشن بندی شده، همانطور که اکنون توسط Mercado Libre استفاده می شود.

توسعه اولیه

ابتدا، Mercado Libre کوکی‌های شخص ثالث را در Chrome غیرفعال کرد و تأیید کرد که کوکی‌های آن‌ها در سایت‌هایی که Mercado Libre به‌عنوان ارائه‌دهنده شخص ثالث در آنجا خدمت می‌کرد، با موفقیت تنظیم نشده است. Mercado Libre سپس این کوکی ها را به روز کرد تا پارتیشن بندی شوند. با این تغییر، آن‌ها می‌توانند تأیید کنند که کوکی‌های پارتیشن‌بندی شده را می‌توان در کروم تنظیم کرد، حتی اگر کاربر کوکی‌های شخص ثالث را غیرفعال کرده باشد. سپس Mercado Libre هدر Set-Cookie را اضافه کرد و با پیروی از دستورالعمل‌های طراحی امنیتی CHIPS ، با خطا مواجه نشد.

بهره وری کسب و کار

Mercado Libre قبلاً استفاده از CHIPS را برای ادغام های Mercado Pago و Mercado Shops با دامنه های سفارشی آغاز کرده است. Mercado Libre اکنون یک کوکی پارتیشن بندی شده اضافی را به همراه یک کوکی پارتیشن نشده استاندارد در دستگاه های کاربران خود ذخیره می کند.

اجرای CHIPS برای Mercado Libre ساده بوده است.

آزمایش اثربخشی تراشه‌ها بر روی مدل‌های تقلب یادگیری ماشینی

Mercado Libre قصد دارد ارسال سیگنال کوکی غیرپارتیشن استاندارد را برای یک گروه کنترل متوقف کند، تا سناریویی را شبیه سازی کند که در آن کوکی های شخص ثالث مسدود شده اند، و در عوض از کوکی های پارتیشن بندی شده (CHIPS) استفاده کند. در ابتدا، این گروه کنترل شامل سهمی از جمعیت یک سایت خواهد بود و Mercado Libre قصد دارد به تدریج سهم و تعداد سایت‌ها را با آزمایش اثربخشی افزایش دهد.

اثربخشی با توجه به تایید پرداخت های گروه کنترل در مقایسه با دوره مشابه قبلی اندازه گیری خواهد شد.

آزمایشات قبلی

Mercado Libre آزمایش مشابهی را روی یک گروه کنترل انجام داد تا بررسی کند که آیا آنها می توانند دستگاه های مشابهی را با استفاده از CHIPS به جای کوکی های پارتیشن نشده شناسایی کنند و سن دستگاه (کوکی) را اندازه گیری کنند.

گروه کنترل متشکل از بازرگانان هدف آرژانتین و برزیل بود. هر دو گروه یکسان رفتار کردند.

در نتیجه، Mercado Libre می‌تواند هویت تقریباً 70 درصد از دستگاه‌های استفاده‌کننده از CHIPS را تأیید کند، به این معنی که 30 درصد باقی‌مانده یا کاربران جدید یا مواردی با رفتار غیرمنتظره هستند.

نتیجه‌گیری اجرای چیپس

Mercado Libre متعهد به محافظت از حریم خصوصی کاربر است، حتی اگر به عنوان یک مبادله بین حریم خصوصی و حداقل اصطکاک کاربر باشد. اجرای CHIPS ساده بود و به حداقل رساندن تأثیر این مبادله در همان سایت کمک کرد. Mercado Libre هنوز در حال بررسی راه حل های دیگر Privacy Sandbox است، مانند Private State Tokens ، که به طور بالقوه می تواند شکاف تجربه را به طور کامل برطرف کند، در نتیجه بهترین های هر دو جهان را داشته باشد: حریم خصوصی و ابزار.

مجموعه‌های وب‌سایت مرتبط (RWS) روشی است که یک شرکت می‌تواند روابط بین سایت‌ها را اعلام کند، به طوری که مرورگرها به کوکی‌های شخص ثالث دسترسی محدود برای اهداف خاص اجازه می‌دهند.

چالش

هنگامی که یک دستگاه جدید وارد یکی از دامنه‌های تحت مالکیت و مدیریت Mercado Libre (O&O) می‌شود، Meli از یک کوکی برای درک فعالیت یک دستگاه در دامنه‌های مختلف، مانند mercadolibre.com و mercadopago.com استفاده می‌کند.

راه حل

برای رسیدگی به موقعیت‌هایی که کوکی‌های شخص ثالث در دسترس نیستند، Mercado Libre RWS را برای همه دامنه‌های رو به مشتری خود که از کوکی‌های شخص ثالث استفاده می‌کردند، با رعایت محدودیت یک دامنه اصلی و پنج دامنه مرتبط دیگر در یک مجموعه واحد پیاده‌سازی کرد.

غواصی عمیق فنی: یافتن دامنه های مناسب برای گنجاندن

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

تیم پلتفرم وب پیشانی مسئول ایجاد و مدیریت مجموعه‌های وب‌سایت مرتبط Mercado Libre بود. (مجموعه کامل را می توانید در مخزن Related Website Set GitHub پیدا کنید.)

 {
      "contact": "infraestructura@mercadolibre.com",
      "primary": "https://mercadolibre.com",
      "associatedSites": [
        "https://mercadolivre.com",
        ...
      ],
      "rationaleBySite": {
        "https://mercadolivre.com": "Mercado Libre in Brazil",
        ...
      },
      "ccTLDs": {
        "https://mercadolibre.com": [
          "https://mercadolibre.com.ar",
     ...
        ],
        "https://mercadolivre.com": [
          "https://mercadolivre.com.br"
        ],
        ...
      }
    },

پس از تایید ارسال، تنها دو هفته طول کشید تا این مجموعه در مرحله تولید زنده بماند.

الزامات

برای اینکه سرور بتواند کوکی‌ها را تنظیم کند، باید از CORS پشتیبانی کند و درخواست‌ها باید از مبدأ متقاطع باشند و شامل اعتبارنامه‌ها باشند:

res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Origin', `${req.headers.origin}`);

کوکی ها باید با موارد زیر پیکربندی شوند:

  • Secure
  • SameSite=None

وقتی کوکی‌های شخص ثالث به‌طور پیش‌فرض در دسترس نیستند، کلاینت باید بررسی کند که آیا با استفاده از navigator.permissions.query() مجوز دسترسی به کوکی‌های پارتیشن نشده را دارد یا خیر و سپس با استفاده از requestStorageAccessFor() مجوز دسترسی به ذخیره‌سازی را برای هر دامنه جاسازی شده درخواست کند. علاوه بر این، تعامل کاربر با صفحه نمایش (مانند یک کلیک یا عملکرد صفحه کلید) برای اینکه عامل کاربر در اولین بار با موفقیت درخواست مجوز کند، ضروری است.

غلبه بر چالش های RWS

فرآیندهای انتشار کوکی‌های موجود مانند پیکسل‌های تصویر، و استفاده از Storage Access API، به دلیل نیاز به تعامل با کاربر، با محدودیت‌هایی مواجه شد. این مورد در مورد ورود دائمی کاربر Mercado Libre در دامنه‌ها بود، که با انصراف کاربران از کوکی‌های شخص ثالث مختل می‌شود.

مجموعه‌های وب‌سایت مرتبط و فناوری‌های جعبه ایمنی حریم خصوصی برای ارائه جایگزین‌های یک به یک برای کوکی‌های شخص ثالث طراحی نشده‌اند و ممکن است از برخی موارد استفاده پشتیبانی نکنند:

  • پیکسل های تصویر

    • Mercado Libre می تواند ویژگی crossorigin="use-credentials" را اضافه کند. با این حال، وابستگی به تعامل کاربر (کاربران روی پیوند کلیک می کنند) به این معنی است که Mercado Libre نمی تواند اطمینان حاصل کند که کوکی تنظیم می شود. اگر پیمایش بین صفحه‌ها وجود داشته باشد، پیکسل‌ها نیز لغو می‌شوند: وقتی Chrome پیمایشی را تشخیص می‌دهد، تمام درخواست‌های منبع از صفحه فعلی را لغو می‌کند تا بارگیری صفحه جدید شروع شود.
  • sendBeacon()

    • crossorigin نمی توان پیکربندی کرد، بنابراین درخواست ها با شکست مواجه می شوند و کوکی ها ارسال نمی شوند.
  • تغییر مسیر با sendBeacon() یا پیکسل های تصویر

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

محدودیت WebView

Permissions API در WebView در دسترس نیست. این امر Mercado Libre را مجبور به پیاده سازی منطق کرد، به موجب آن Storage Access API تنها در جایی که Permissions API در دسترس است (در همه جا به جز WebView) راه اندازی می شود. علاوه بر این، requestStorageAccessFor() در حال حاضر توسط Safari یا Firefox پشتیبانی نمی شود .

Mercado Libre همچنان بدون توجه به پلتفرم، از تشخیص ویژگی در صورت لزوم استفاده می کند.

راه حل مناسب برای همه

Mercado Libre باید از fetch() و {keepalive: true, credentials: 'include'} استفاده کند. به این ترتیب، آنها می‌توانند CORS را پیکربندی کنند، اعتبارنامه‌ها را لحاظ کنند و اطمینان حاصل کنند که درخواستی در پس‌زمینه بدون لغو شدن توسط مرورگر انجام می‌شود.

fetch(domain, {
  keepalive: true,
  credentials: 'include',
});

// or

fetch(domain, {
  method: 'POST'
  body: data,
  keepalive: true,
  credentials: 'include',
});

مثال کامل:

const TP_DOMAINS = ['https://mercadolibre.com',
                   'https://www.mercadoshops.com.ar',
                   'https://www.mercadopago.com',
                   'https://www.mercadopago.com.ar'];

if ('requestStorageAccessFor' in document) {
   // Check the permission to see if storage access is already available.
   let storageAccessPermission = await navigator.permissions.query({
       name: 'top-level-storage-access',
       requestedOrigin: TP_DOMAINS[0]
   })

   // If the permission has already been granted, request storage access.
   if (storageAccessPermission.state === 'granted') {
       requestStorageAccessForDomains();
   }

   // If the state "prompt" is returned, a storage access request must be triggered by user gesture.
   else if (storageAccessPermission.state === 'prompt') {
       document.addEventListener('click', requestStorageAccessForDomains, { capture: true });
       document.addEventListener('keydown', requestStorageAccessForDomains, { capture: true });
   }
} else {
   console.log('requestStorageAccessFor is not supported');
}

function requestStorageAccessForDomains() {
   // Request storage access for each domain.
   TP_DOMAINS.forEach(rSAFor)

   // Clean up listeners so they are not called again.
   document.removeEventListener('click', requestStorageAccessForDomains);
   document.removeEventListener('keydown', requestStorageAccessForDomains);
}

function rSAFor(domain) {
   document.requestStorageAccessFor(domain).then(
       success => { setCookie(domain); },
       err => { console.log('requestStorageAccessFor error: ' + err); }
   );
}

function setCookie(domain) {
   const url = new URL(domain);
   const hostname = url.hostname.split('.').slice(1).join('.');
   fetch(domain + '/pixel.gif?name=_d2id&value=DONE&max_age=94608000&domain=.' + hostname, {
       keepalive: true,
       credentials: 'include',
   });
}

تست در کروم

یک مجموعه وب سایت مرتبط را می توان به صورت محلی با تنظیم پرچم Chrome آزمایش کرد. به عنوان مثال، برای نسخه ی نمایشی در related-website-sets.glitch.me :

--use-related-website-set="{\"primary\": \"https://related-website-sets.glitch.me\", \"associatedSites\": [\"https://rws-member-1.glitch.me\"]}"
https://related-website-sets.glitch.me/

نتیجه گیری پیاده سازی RWS

پیاده سازی RWS برای سایت های در مقیاس بزرگ بی اهمیت نیست . Mercado Libre تنها به منابع یک توسعه دهنده نیاز داشت، اما از ابتدا تا پایان فرآیند عرضه به 18 کشور حدود سه ماه طول کشید.

توصیه برای کسانی که می خواهند RWS را پیاده سازی کنند: زود شروع کنید! منتظر پیاده سازی RWS نباشید. Mercado Libre باید کوکی‌ها را در سمت سرور و کلاینت تغییر می‌داد، سرصفحه‌های جدید اضافه می‌کرد، تغییرات باطنی انجام می‌داد و جاوا اسکریپت را به‌روزرسانی می‌کرد.

اظهارات پایانی و مراحل بعدی

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