ملی ای‌پی‌آی

نام صاحب کارت را به کاربر نشان بدهیم؟ طراحی حریم خصوصی در استعلام نام کارت

نام صاحب کارت را برای تأیید لحظه‌ای ماسک‌شده نشان دهید، پشت ورود و سقف نرخ، و آن را کنار شمارهٔ کارت ذخیره نکنید.

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

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

دو الگوی نمایش، دو سطح افشا

الگوی اول: نام کامل زیر فیلد. کاربر شماره را می‌زند و نام کامل صاحب کارت زیرش ظاهر می‌شود. ساده‌ترین پیاده‌سازی است ولی بیشترین افشا را هم دارد.

الگوی دوم: نام ماسک‌شده. مثلاً حرف اول نام و نام خانوادگی کامل، یا نام کامل و فقط حرف اول نام خانوادگی. کاربر برای تأیید «همان آدمی که می‌خواستم» کافی می‌بیند، ولی شما هرچه را به دست او نمی‌رسانید که لازم نیست.

تفاوت در این است که در الگوی اول هر کسی که به فرم دسترسی دارد، یک ابزار جست‌وجوی «شماره کارت به نام» دارد. اگر فرم شما بدون ورود هم کار می‌کند، آن ابزار برای عموم است. فرض کنید یک سایت کوچک فروش با فرم پرداخت باز: بدون حساب کاربری هم می‌شود شماره‌های متوالی را وارد کرد و نام‌ها را جمع کرد.

به نظر من پیش‌فرض باید الگوی دوم باشد، و الگوی اول فقط وقتی که طرف مقابل واقعاً دلیلی دارد: مثلاً کاربر وارد شده، کارت متعلق به خود اوست یا اختیار انتقال را دارد.

سه کنترل پیش از نمایش نام

  1. نیاز به ورود. استعلام نام از یک صفحهٔ بدون احراز نباید انجام شود. حتی یک حساب کاربری ساده، جلوی پویش انبوه را بیشتر می‌گیرد.
  2. سقف نرخ. در هر بازهٔ زمانی، هر کاربر چند شماره کارت می‌تواند بپرسد؟ مقدارش به محصول شما بستگی دارد، ولی باید باشد. بدون سقف، فرم شما یک درگاه رایگان برای هر کسی است که می‌خواهد فهرست بزرگی از کارت‌ها را بررسی کند، و هزینهٔ هر پرسش را هم شما می‌دهید (فراخوان معتبر صورتحساب می‌شود؛ برای قاعده‌اش تعرفه را ببینید).
  3. ثبت در گزارش. هر استعلام را با کاربر، زمان و (ماسک‌شدهٔ) شمارهٔ کارت ثبت کنید، نه نام. اگر روزی اعتراضی بیاید، بدانید چه کسی چه پرسیده.

نام را بعد از نمایش نگه ندارید

یک اشتباه رایج: نام را برای «اینکه دوباره نخواهیم بپرسیم» کنار کارت ذخیره می‌کنند. حالا پایگاه داده‌ای دارید که شماره کارت و نام کامل را کنار هم نگه می‌دارد. اگر لازم است نتیجه را حفظ کنید، فقط این را ذخیره کنید که «در این تاریخ کاربر تأیید کرد این نام همان فرد مورد نظر است». خود نام را برای نمایش لحظه‌ای بگذارید و دور بریزید.

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

چه خطاهایی در این فرم دیده می‌شود

استعلام نام کارت هم همان شش حالت شناخته‌شدهٔ خانوادهٔ کارت را دارد: نامعتبر، پیدا نشد، منقضی، غیرفعال، حساب غیرفعال و مفقودی. در فرمی که نام نمایش می‌دهد، نمایش دو حالت اهمیت دارد:

  • «پیدا نشد» نباید مثل «تایپ اشتباه» برخورد شود؛ ممکن است کارتی واقعی باشد که روی این استعلام نیست.
  • مفقودی را به کاربر مثل بقیه نشان ندهید؛ پیام عمومی بدهید و در گزارش داخلی ثبت کنید.

آنچه این سرویس نمی‌کند

این استعلام فقط نام می‌دهد. شماره حساب نمی‌دهد (برای آن تبدیل کارت به حساب هست)، مقایسه انجام نمی‌دهد، و هویت کاربر را اثبات نمی‌کند. دانستن اینکه نام روی کارت «علی رضایی» است، به این معنا نیست که کسی که پشت صفحه نشسته علی رضایی است.

نام فارسی بانکی هم همیشه تمیز نیست. اگر قصد مقایسه با رشتهٔ دیگری دارید، نکتهٔ یکدست‌سازی نام فارسی را بخوانید.

یک سناریوی فرضی: فرم پرداخت یک فروشگاه کوچک

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

اگر این فرم بدون ورود در دسترس باشد، هر کسی می‌تواند شماره‌های کارت را یکی‌یکی وارد کند. نام‌ها نشت می‌کنند و هزینهٔ هر استعلام با شماست. اصلاح ساده است: فرم پشت ورود، نام ماسک‌شده، و سقف تعداد استعلام در ساعت برای هر کاربر.

همین فرم را به‌صورت دیگر طراحی کنید: مشتری ابتدا ورود می‌کند، شماره کارت را وارد می‌کند، و زیر فیلد می‌بیند «علی ر.ضایی» یا «ع. رضایی». برای تأیید «کارت خودم است» کافی است، و برای کسی که شماره دیگری را امتحان می‌کند، اطلاعات قابل‌استفاده‌ای نیست.

ماسک را چطور بسازیم

ماسک را بر اساس واژه‌ها بسازید، نه نویسه‌ها. نام فارسی با نیم‌فاصله و ترکیب‌های مختلف می‌آید و بریدن در وسط یک واژه یا وسط یک حرف چسبیده بد به نظر می‌رسد. یک تابع ساده: واژهٔ اول را نگه دارید یا فقط حرف اولش را، و واژه‌های بعدی را با حرف اول و نقطه نشان بدهید. برای نام‌های یک‌واژه‌ای (که کم نیستند)، فقط حرف اول و ستاره.

یک تله: ماسک نباید طوری باشد که از روی آن بشود نام را حدس زد. نمایش «حسن م…» برای شهر کوچکی که یک «حسن م…» دارد، عملاً نام کامل است. ماسک را بر اساس زمینهٔ کاربران خودتان بسنجید.

وقتی نمایش لازم نیست

گاهی اصلاً لازم نیست نام را نشان بدهید. اگر کاربر نام خود را در پروفایل ثبت کرده و می‌خواهید بدانید کارت مال اوست، مقایسه را خودتان انجام بدهید و فقط بگویید «مطابق» یا «غیرمطابق». این بدون افشای نام، همان هدف را برآورده می‌کند. برای مقایسه، نام را یکدست کنید و اگر نمی‌خواهید آن را خودتان بنویسید، سرویس تطابق کارت و نام این کار را می‌کند.

یادآوری ساده برای تیم محصول

پیش از اینکه نمایش نام را به فرم اضافه کنید، سه سؤال بپرسید: چه کسی این فرم را می‌بیند؟ اگر بدخواه باشد چه می‌تواند بکند؟ و بدون نمایش نام، آیا هدف فرم برآورده می‌شود؟ اگر جواب سوم «بله» است، خود سرویس استعلام نام صاحب کارت را جایی استفاده کنید که نیازی به نمایش ندارد، مثلاً مقایسه در پشت صحنه.

در یک نگاه

  • هدف نمایش را مشخص کنید: تأیید لحظه‌ای، نه جست‌وجوی هویت.
  • نام را ماسک کنید، مگر دلیل روشن دارید.
  • نیاز به ورود، سقف نرخ و ثبت در گزارش را همراه فرم بسازید.
  • نام را کنار شماره کارت ذخیره نکنید.
آخرین بازبینی: تیم تحریریه ملی ای‌پی‌آی

وب‌سرویس مرتبط با این راهنما

API استعلام نام صاحب کارت

نام دارنده یک شماره کارت را ببینید.

مشاهده مشخصات فنی و تعرفه

راهنماهای مرتبط

پرسش و تجربه کاربران

اگر این راهنما جوابتان را نداد، همین‌جا بپرسید. پرسش‌ها را تیمملی ای‌پی‌آی پاسخ می‌دهد و هر نظر پیش از انتشار بررسی می‌شود.

هنوز پرسشی ثبت نشده، اولین نفر باشید.