PDA

View Full Version : امنیت در ارتباط با وب سرویس



ho3ein.3ven
پنج شنبه 25 تیر 1394, 17:32 عصر
سلام دوستان

همونجوری که میدونین به راحتی میشه فهمید که یه نرم افزار با چه وب سرویس هایی در ارتباط هست و چه دیتایی رو به سرور پاس میده . به همین دلیل امنیت نرم افزار به شدت پایین میاد .

برای رفع این موضوع چه ایده یا نظری دارید ؟

karl2008
پنج شنبه 25 تیر 1394, 18:02 عصر
با روشهای رمزگذاری مثل RSA امنیت ارسال و دریافت داده بالا میره.

ho3ein.3ven
پنج شنبه 25 تیر 1394, 18:35 عصر
یعنی دیتاهای ارسالی به سرور رو رمز نگاری کنم ؟

ho3ein.3ven
جمعه 26 تیر 1394, 18:01 عصر
کسی دیگه نظری نداره ؟

Nevercom
جمعه 26 تیر 1394, 18:24 عصر
این که کسی متوجه بشه آدرس وب سرویس چی هست و چه متدهایی داره و هر متد چه پارامترهایی نقص امنیتی به شمار نمیاد. فرض کنید قصد داشته باشید یک API برای سایر توسعه دهنده گان ایجاد کنید، خب اونجا باید همه ی متدها و خروجی و ورودی مشخص باشه.

در عوض خود وب سرویس رو باید به شکلی ایجاد کنید که امکان سوء استفاده ازش به حداقل برسه، باید از الگوهایی استفاده کنید تا ضعف های امنیتی موجود رو برطرف کنید.
یک قانون کلی هم وجود نداره، بر اساس کارکرد وب سرویس خودتون باید ضعف های احتمالی رو پیدا کنید و برطرفش کنید.

اگر نگران این هستید که ارتباط بین کلاینت و سرور شما شنود بشه یا داده ها دستکاری بشن (مثلاً ISP بیاد ارتباط سرور شما رو تحت نظر بگیره) اونموقع روش های رمزنگاری داده ها رو میتونید استفاده کنید.

ho3ein.3ven
شنبه 27 تیر 1394, 00:54 صبح
واقعا ممنون از توضیحات کاملتون

به عنوان مثال در نظر بگیرید که یک وب سرویس برای ذخیره موقعیت جغرافیایی کاربر در سرور طراحی کرده اید .
اگر کاربر بتونه به این وب سرویس بدون واسطه دسترسی داشته باشه خب خیلی راحت میتونه مقدار lat و lng جعلی در سرور ذخیره کنه .
برای رفع مشکلات این چنینی چه ایده ای دارید ؟

Nevercom
شنبه 27 تیر 1394, 23:00 عصر
اگر سیستم شما کاربر محور هست، یعنی هر کاربر میتونه اطلاعات مربوط به خودش رو وارد کنه، خب قبلش باید لاگین کنه که این میشه عامل کنترلی شما.

اگر اینطور نیست عملاً باید هر کلاینت بتونه براحتی داده ها رو ثبت کنه، که تشخیص جعلی نبودنش باید داده ها رو به روشی پالایش کنید.

این موضوع رو نمیشه به تنهایی بررسی کرد، باید در قالب پروژه اون رو بررسی کرد و در کنار سایر امکانات وب سرویس، ببینید چطور میتونید جلوی این سوءاستفاده ها رو بگیرید.

ho3ein.3ven
یک شنبه 28 تیر 1394, 00:05 صبح
بله کاربر از قبل رجیستر می کنه و یک کد بهش اختصاص داده میشه .
بعد یک قسمت برای ارسال موقعیت خودش داره . که با ورود به اون بخش موقعیت گرفته میشه و به وب سرویس ارسال میشه به همراه کدی که به کاربر تخصیص داده شده . حالا اگر یک کاربر این وب سرویس رو بدست بیاره به راحتی میتونه موقعیت جعلی ارسال کنه .

ho3ein.3ven
دوشنبه 29 تیر 1394, 00:54 صبح
دوستان کسی نظری نداره ؟

Nevercom
دوشنبه 29 تیر 1394, 09:43 صبح
فرض کنیم کاربر برای استفاده از سرویس شما اول باید لاگین کنه.

در این حالت شما بر روی بقیه ی متدهای وب سرویس یک شرط ایجاد می کنید که اگر کاربر لاگین نباشه، پیغام خطایی بر گردونه.

یکی از روش ها این هست که هنگام لاگین موفق (یا ثبت نام) یک token برای اون کاربر ایجاد کنید و همراه پاسخ برای کلاینت ارسال کنید. کلاینت باید اون توکن رو ذخیره کنه و همراه هر درخواست (مثلاً در Header درخواست) اون رو ارسال کنه.
تو وب سرویس اول از همه چک می کنید که آیا توکن موجود هست یا نه (و اگر موجود هست اعتبار داره یا نه)، اگر موجود نبود و البته درخواست کاربر برای لاگین یا ثبت نام نبود (متدهایی که برای اجرا نیاز به احراز هویت ندارن)، پیغام خطا برگردون و درغیراینصورت عملیات موردنظر رو انجام بده.

ضمن اینکه بعضی اطلاعات مثل کد کاربری رو نباید از سمت کلاینت دریافت کنید، در عوض همه ی اونها رو به توکن نسبت بدید و خودتون در وب سرویس اون اطلاعات رو بدست بیارید.

اینکار باعث میشه که اولاً یک کاربر نتونه کلی داده ی الکی ایجاد کنه، و اگر هم داده های جعلی ارسال کرد، تنها برای همون یوزر ثبت میشه و عملکرد کلی سیستم رو دچار مشکل نمیکنه.

ho3ein.3ven
دوشنبه 29 تیر 1394, 16:22 عصر
ممنونم بابت پاسختون
ولی با این روش هم این مشکل حل نمیشه . چون که توکن هم به راحتی پیدا میشه .