View Full Version : حرفه ای: محدود کردن استفاده از web api
vbkaar
چهارشنبه 11 اردیبهشت 1398, 16:00 عصر
سلام. فرض کنید که یک web api داریم و در وب اپلیکیشن سمت کلاینت از طریق ajax و همچنین از طریق اپلیکیشن اندرویدی خودمون به متدهای این api دسترسی پیدا میکنیم. در این حالت اکشن های این api از طریق کد وب اپلیکیشن در معرض دید همه هست. و هر کی بخواد میتونه یک اپ دیگه بنویسه که با این api ارتباط برقرار کنه و کار کنه! میخواستم بدونم برای جلوگیری از این مشکل راه حل استاندارد چی هست. ممنون میشم راهنمایی کنید.
farhad_shiri_ex
چهارشنبه 11 اردیبهشت 1398, 17:00 عصر
سلام. فرض کنید که یک web api داریم و در وب اپلیکیشن سمت کلاینت از طریق ajax و همچنین از طریق اپلیکیشن اندرویدی خودمون به متدهای این api دسترسی پیدا میکنیم. در این حالت اکشن های این api از طریق کد وب اپلیکیشن در معرض دید همه هست. و هر کی بخواد میتونه یک اپ دیگه بنویسه که با این api ارتباط برقرار کنه و کار کنه! میخواستم بدونم برای جلوگیری از این مشکل راه حل استاندارد چی هست. ممنون میشم راهنمایی کنید.
یک راه حل این هست که یک checksum ویا یک CRC بسازید در اپلیکیشن های خودتون حالا چه وب چه موبایل سمت سرور هم این کد را مجددا بسازید با کد دریافتی خودتون از کلاینت ها مطابقت بدهید در صورتی که رکویست به سرور از سمت برنامه های خودتون نبود رکویست کنسل کنید اینطوری دیگه به راحتی نمیتونن از وب سرویس های شما استفاده کنند.
برای CRC هم می توانید از این روش استفاده کنید
1- داده های مورد نظری که می خواهید ارسال کنید را با یک generator مثل این CRC12 : G=X^12+X^11+X^3+X^2+X^1+1 تقسیم کنید.
2- بایقیمانده تقسیم را به فریم داده اضافه کنید در اینجا حتی می توانید از اعداد ابتکاری ریاضی هم استفاده کنید
3- داده را به سمت سرور ارسال کنید.
4- در سمت سرور هم همین عملیات را بالعکس تکرار کنید باقیمانده تقسیم و داده ها را باهم مقایسه کنید.
حتی با کمی تغییر این الگوریتم می توانید از دستکاری داده هاتون هم توسط ابزارهای اسنیفینگ در امان بمونید مثلا تصور کنید که داده هایی که با جنراتور تقسیم کردید را در سمت سرور هم اگر مجددا تقسیم بر جنراتور و باقیمانده تقسیم که دریافت کردید انجام بدید نتیجه باید 0 شود که در اونصورت یعنی داده های شما تغییری در بین راه نداشته اند و مطمن هستند.
البته روش های دیگه مثل Hash و checksum و... هم هستند حتی می توانید از ترکیب این روشها هم استفاده کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.