بعضی فروشگاهها میخواهند مشتری در سایت یا اپلیکیشن خود وارد شود و مانده یا گردش حسابش را ببیند. داشتن افزونه API، به معنی آمادهبودن خودکار یک پنل مشتریان با دسترسی محدود نیست. اتصال فنی به تهحساب و احراز هویت مشتری در سایت، دو مسئولیت متفاوتاند.
معماری پیشنهادی
- مشتری ابتدا در سایت یا اپلیکیشن فروشگاه احراز هویت شود. کد حسابی که کاربر خودش در فرم یا نشانی صفحه وارد میکند، نباید بهتنهایی مجوز مشاهده آن حساب باشد.
- در پایگاه داده سمت سرور وبسایت، ارتباط تأییدشده میان شناسه کاربری سایت و کد حساب مجاز در تهحساب نگهداری شود.
- در هر درخواست گزارش، بکاند سایت کد حساب مجاز را از نشست احرازشده استخراج کند؛ نه از کد دلخواهی که مرورگر فرستاده است.
- درخواست به API از سرور امن برنامه ارسال شود. توکن یا اطلاعات اتصال نباید در JavaScript، HTML، برنامه عمومی موبایل یا پاسخ قابل مشاهده مشتری قرار بگیرد.
- بکاند فقط دادههای همان حساب و فقط فیلدهای موردنیاز نمایش را به کاربر برگرداند. خواندن سندهای حساب دیگر، ویرایش اسناد یا عملیات مالی باید از این مسیر مسدود باشد.
- برای ورود، تغییر رمز، تغییر شماره همراه، درخواستهای پرحجم و خطاهای دسترسی، ثبت رویداد و محدودیت نرخ درخواست در نظر بگیرید.
چرا صرف کد حساب کافی نیست؟
فرض کنید مشتری اول کد حساب ۱۰ دارد و مشتری دوم کد ۱۱. اگر کاربر اول بتواند با تغییر پارامتر درخواست از ۱۰ به ۱۱، گزارش مشتری دوم را بگیرد، وجود نام کاربری و رمز ورود هیچ کمکی به محرمانگی نکرده است. بکاند باید مجوز دسترسی به کد ۱۱ را مستقل از درخواست کاربر بررسی و رد کند.
مجوزهای خود API را جدا بررسی کنید
در یکی از مکالمات فنی، پشتیبانی توضیح داده بود که فعالکردن API میتواند دسترسی گستردهای به امکانات مستندشده فراهم کند و محدودیتهای آن با حساب کاربری سایت یکسان نیست. بنابراین تا زمانی که سطح دسترسی توکن در نسخه نصبشده با مستندات و آزمون عملی تأیید نشده، توکن اصلی را پرمجوز فرض کنید. اگر API محدودسازی کافی ندارد، آن را پشت یک سرویس واسطِ کنترلکننده دسترسی قرار دهید. پایگاه SQL Server را نیز مستقیماً در اینترنت عمومی در معرض اتصال مشتریان قرار ندهید.
کنترل نهایی قبل از راهاندازی
با دو حساب آزمایشی متفاوت، ورود و خروج، مشاهده گزارش خود، تلاش برای درخواست حساب دیگر و قطع دسترسی را آزمون کنید. نوع احراز هویت، فهرست متدهای مجاز و نحوه بهروزرسانی اطلاعات را مطابق مستندات API نسخه جاری انتخاب کنید؛ از وجود قابلیتهایی مانند وبهوک یا دسترسی خواندنیِ محدود بدون سند فنی مطمئن نشوید.
