یک پاسخ برای هر نفر: چرا محدودیت مبتنی بر مرورگر کافی نیست
گزینهی «هر نفر یک بار» در بیشتر فرمسازها به کوکی تکیه میکند — و با یک پنجرهی ناشناس دور میخورد.
وقتی نظرسنجی سازمانی میگیرید و میخواهید هر کارمند فقط یک بار پاسخ بدهد، معمولاً گزینهای به اسم «هر نفر فقط یک بار» هست. ولی این گزینه چطور «هر نفر» را تشخیص میدهد؟
روش رایج: کوکی و اثرانگشت مرورگر
بعد از ثبت، یک کوکی در مرورگر گذاشته میشود و دفعهی بعد اگر همان کوکی بود، فرم بسته است. گاهی اثرانگشت مرورگر (ترکیب تنظیمات، فونتها، وضوح صفحه) هم اضافه میشود.
مشکلاتش:
- پنجرهی ناشناس کوکی ندارد.
- مرورگر دیگر یا گوشی دوم، کوکی دیگری دارد.
- پاککردن دادههای مرورگر محدودیت را برمیدارد.
- و برعکس: در سازمانی که چند نفر از یک کامپیوتر مشترک استفاده میکنند، نفر دوم ناعادلانه بلوکه میشود.
روش مقاوم: کلید هویت
بهجای مرورگر، به چیزی تکیه کنید که خود شخص وارد میکند: کد پرسنلی، کد ملی، ایمیل سازمانی یا شماره موبایل.
هر مقدار فقط یک بار میتواند پاسخ ثبت کند، فارغ از اینکه با چه دستگاهی آمده باشد.
نکتهی حیاتی: نرمالسازی
«۱۰۰۲» با ارقام فارسی و «1002» باید یک نفر حساب شوند. اگر نشوند، اولین کسی که بخواهد دوباره جواب بدهد، دقیقاً همین را امتحان میکند. همینطور فاصلهی اضافه، و حروف بزرگ و کوچک در ایمیل.
نکتهی دوم: تضمین باید در پایگاهداده باشد
اگر برنامه قبل از ثبت چک کند «آیا این کد قبلاً هست؟»، دو نفر که دقیقاً همزمان بفرستند هر دو جواب «نیست» میگیرند و هر دو ثبت میشوند. تضمین واقعی یک محدودیت یکتایی در خود پایگاهداده است.
ناشناسی را از دست نمیدهید
سؤال درستی که پیش میآید: اگر کد پرسنلی بگیرم، دیگر ناشناس نیست.
لازم نیست کد پرسنلی در گزارش دیده شود. میتوانید آن را فقط بهعنوان کلید یکتایی نگه دارید و از گزارشها حذفش کنید. اگر حساسیت بالاست، میتوانید فقط اثر رمزنگاریشدهاش را نگه دارید — که برای تشخیص تکرار کافی است ولی برگرداندنش به کد اصلی ممکن نیست.
این را به کارکنان هم بگویید، وگرنه صرفِ دیدن فیلد کد پرسنلی باعث میشود محتاط جواب بدهند.
روش سوم: دعوتنامهی یکبارمصرف
برای هر نفر یک لینک یکتا بفرستید که بعد از یک بار استفاده میسوزد. قویترین روش است و اصلاً نیازی به وارد کردن هویت ندارد — ولی نیاز دارد که فهرست ایمیل یا موبایل همه را داشته باشید.