امنیت وب سرویس
با سلام.
استاد در ویدئوی مربوط به بخش وب سرویس گفتند که برای استفاده اختصاصی خودمان از وب سرویس و اجازه ندادن به افراد دیگر برای استفاده از داده های وب سرویسمان، باید از کد ها و رمز های منحصر به فرد استفاده کنیم. مثلا نام پکیج اپلیکیشن اندروید را برای سایت بفرستیم و اطلاعات را فقط خودمان دریافت کنیم. یا برای مثال یک کد Encrypt شده برای وب سرویس بفرستیم و از داده های آن استفاده کنیم.
و اما مشکل من:
اطلاعات ( رمز و Hash ها ) باید بصورت پارامتر به سرور فرستاده بشوند. ارسال پارامتر هم به دو روش GET و POST صورت میگیرد. پس پارامتر ها یا در URL یا در بطن Request ارسال میشوند. به لطف ابزار های ردیابی URL، دیگر کار مشکلی نیست که URL و پارامتر ها کشف بشوند و سرویس ما عملا برای فرد " هکر و متجاوز " باز می شود.
مثال عملی:
مثلا نام پکیج اپلیکیشن اندروید من "com.example.app" هست و به آدرس "example.com/webservice/data/com.example.app/ojfgfd4og8hf5g2o" درخواست میفرستم ( عبارت "ojfgfd4og8hf5g2o" یک Hash جهت اطمینان بیشتر است )
خب حالا هکر ( حتی آماتور ) با استفاده از نرم افزار های ردیابی ( که معرفی آنها کار صحیحی نیست ) آدرس را کشف کرده ( حتی پارامتر های POST ) و اینگونه وب سرویس ما توسط دیگران قابل استفاده میشود.
به نظر شما چگونه باید امنیت در وب سرویس را تا حد قابل قبولی افزایش داد؟
چند نکته در مورد امنیت وب سرویس:
1- شما برای شناسایی کاربرتون یا همون Authentication نباید username و password کاربران رو به سرورتون ارسال کنید فقط لازمه که با هر درخاست یه token به صورت پارامتر ارسال کنید که این token برای هر کاربر منحصر به فرد است و در دیتابیس سرور ذخیره شده و اینجوری میفهمید که چه کاربری داره به شما درخاست میده و دیگه کسی غیر از کاربران شما نمیتونه براتون مزاحمت ایجاد کنه.
2- برای امنیت در خصوص اطلاعات و پارامتر هایی که با سرور ردوبدل میکنید بهترین گزینه میتونه این باشه که گواهینامه SSL رو برای سایتتون تهیه کنید -- در این صورت اطلاعات به صورت رمز نگاری شده مبادله میشه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .