رفتن به محتوای اصلی

حریم خصوصی و رضایت

کنترل consent، masking پیش‌فرض Session Replay و مرز استفاده از credentialهای مرورگر و سرور.

آلفانا برای کنترل نحوه شروع collection و مدیریت داده‌های حساس، تنظیمات مشخصی برای رضایت کاربر، Session Replay و credentialها در اختیار SDK قرار می‌دهد.

در حالت consentMode: "auto"، اگر Widget رضایت در runtime config فعال باشد، SDK تا زمانی که کاربر تصمیم خود را مشخص نکند collection را آغاز نمی‌کند. در این وضعیت، ثبت و ارسال داده‌های رفتاری تا دریافت پاسخ کاربر متوقف می‌ماند.

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

Session Replay#

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

  • sessionReplayMaskAllInputs به‌طور پیش‌فرض روی true قرار دارد. با این تنظیم، مقدار inputها در Replay به‌صورت پیش‌فرض mask می‌شود و متن واردشده توسط کاربر در داده‌های ضبط‌شده نمایش داده نمی‌شود.

  • sessionReplayMaskTextClass به شما اجازه می‌دهد یک class مشخص را برای masking متن تعریف کنید. متن elementهایی که این class را دارند در Session Replay مخفی می‌شود، بدون اینکه لازم باشد کل آن بخش از صفحه از capture حذف شود.

  • sessionReplayBlockClass برای بخش‌هایی استفاده می‌شود که نباید در Replay ثبت شوند. subtree مربوط به elementهایی که این class را دارند به‌طور کامل از capture حذف می‌شود.

  • inline کردن stylesheetها به‌صورت پیش‌فرض غیرفعال است. این رفتار کمک می‌کند حجم payload اولیه Session Replay افزایش غیرضروری پیدا نکند و احتمال عبور نکردن درخواست از محدودیت‌های keepalive کاهش پیدا کند.

بهتر است masking را فقط به تنظیمات پیش‌فرض محدود نکنید. هر بخشی از محصول که ممکن است اطلاعات شخصی، مالی، محرمانه یا داده‌ای خارج از نیاز تحلیلی آلفانا نمایش دهد باید قبل از انتشار بررسی شود و در صورت نیاز با sessionReplayMaskTextClass یا sessionReplayBlockClass محافظت شود.

Credentialهای مرورگر و سرور#

Credentialهایی که برای SDK مرورگر استفاده می‌شوند با کلیدهای دسترسی به Public API یکسان نیستند و نباید به‌جای یکدیگر استفاده شوند.

secretKey مربوط به App برای استفاده در SDK مرورگر طراحی شده است. با این حال، ingestion فقط بر اساس وجود این مقدار انجام نمی‌شود.

Backend هنگام دریافت داده، علاوه بر Bearer token، اطلاعاتی مثل appId و دامنه ثبت‌شده App را نیز اعتبارسنجی می‌کند تا درخواست ingestion با App و origin مورد انتظار مطابقت داشته باشد.

این تفاوت مهم است:

  • secretKey بخشی از قرارداد SDK مرورگر و ingestion است.
  • Account API Key با پیشوند alphana_api_ یک credential سطح حساب برای Public API است.
  • Account API Key باید همیشه خارج از کد سمت کاربر و در محیط امن سرور نگهداری شود.

اگر از Next.js یا Framework مشابهی استفاده می‌کنید، Account API Key را فقط در environment variableهای سمت سرور قرار دهید و از prefixهایی مثل NEXT_PUBLIC_ برای آن استفاده نکنید.

توصیه‌های اجرایی#

  • قبل از فعال کردن Session Replay، فرم‌ها و بخش‌هایی که ممکن است داده حساس نمایش دهند بررسی کنید.
  • masking پیش‌فرض inputها را فقط در صورتی تغییر دهید که دقیقاً بدانید چه داده‌ای ثبت خواهد شد.
  • برای بخش‌هایی که اصولاً نباید وارد Replay شوند، از sessionReplayBlockClass استفاده کنید.
  • consentMode را بر اساس سیاست واقعی رضایت محصول انتخاب کنید، نه صرفاً برای ساده‌تر شدن نصب SDK.
  • Account API Key را فقط در backend، server function، API route یا محیط امن مشابه نگهداری کنید.
  • هیچ credential سطح حساب را داخل bundle مرورگر، HTML خروجی، GTM یا کد عمومی قرار ندهید.