امنیت وب سرویس

با درود خدمت شما . چند روز پیش یک مطلب در مورد استراکچر وب سرویس ها از نظر امنیتی خونده بودم که بیشتر در مورد بانک ها بود تا در مورد وب سایت ها هایی مثل فیسبوک و گوگل یا اینستا و …

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

به همین دلیل قبل از هرچیزی نسبت به موارد زیر مشاوره می خوام و هم بعد از مشاوره خواهشمندم هرچیزی که از نظر شما مهم هست را در صورت امکان در همین مطلب قرار بدید هم بنده و هم دیگر دوستان استفاده کنند

#آیا برای وب سرویس ها یک کنترل کننده کافیست ؟
به عنوان مثال همه اپ ها یک جی سان می فرسند به وب سرویس و اینجا کنترل می شه اگر اوکی بود از دیتابیس اطلاعات رو می یاره و ارسال می کنه به خود فرستنده ؟ یا برای امنیت بیشتر در این باره باید استراکچر دیگه ای در نظر گرفته بشه

مثلا این سرویس های واسط باید چندتا بشند یا …

#آیا بیشتر از چک لیست های زیر باید در یک وب سرویس چک بشه ؟

انتقال اطلاعات به روش امن تر مثل https
انتقال اطلاعات به صورت کد شده
اضافه کردن یک امضای دیجیتال برای کلاینت
مشخص کردن دسترسی و نمایش اطلاعات به صورت شفاف
ولیدیشن تمامی اطلاعات در نسخه خود وب اپ یا موبایل اپ
ولیدشن دوباره و اصلی در خود وب سرویس نسبت به تمام اطلاعات ورودی ( فایل یا متنی )
مشخص کردن سایز پیغام ها و درخواست ها نسبت به کاری که کاربر می خواهد برای جلوگیری از تکرار و حملات تکرار

این سری موارد تو فکر بنده رسیده . به صورت کلی هست . باید خدمت دوستان به این نکته اشاره کنم تمام مواردی بیان شده به این صورت هست که json تولید یا ارسال می گردد.

امید وارم منو راهنمایی کنید تا از همین اولین روز پروژه تحقیقاتیم به صورت صحیح جلو برم . من قرار هست از phoenix و الکسیر استفاده کنم برای ارائه وب سرویس

با تشکر

لطفا در مورد اينكه فقط يك كنترلر داشته باشيد يا بيشتر و اينكه چطور تعداد كنترلر كمك به امنيت ميكنه بيشتر توضيح بدين.
هرچى كه ساختار سرويس ها و نرمافزار ساده تر باشه امنيتش هم بيشتره چون براى سازندش قابل درك و خواناس پس ميتونه بهتر ضعف ها رو از بين ببره.
حتما از https استفاده كنيد.
Validation ها بايد تا اونجايى كه امكان داره در هر دو سمت باشند يعنى تا جايى كه ميشه هر وليديشنى كه سمت سرور هست سمت كلاينت هم باشه كه هم كلاينت مرطب ريفرش نكنه و هم شما سرعت بهتري داشته باشيد.
بعضى از وليديشن ها فقط سمت سرور امكان پذيره مثل uniqueness. داشتن وليديشن در هر دو سمت باعث ميشه كاربر قبل از submit بدونه كه اشكال كجاست.

1 پسندیده

درود خدمت شما تشکر از پاسختون . خدمتتون در بالا گفتم اون برای بانک ها بیشتر بود ولی در اینجا دیدم


در اینجا یک اسلاید و یک فایل صوتی هست که در مورد وب سرویس های بانکی داره کمی صحبت می کنه روند چند کنترلرشون و …

دوستان در مورد مطلب اول من اطلاعات یا نظر خاصی دارند . بسیار لطف می کنند قرار بدند . اصلا یادم رفته بود این مطلب رو ادامه بدم .

خلاصه موضوع من اولین باره دارم در حد خودم در حجم بالا api می نویسم . البته نوشتم روی php ولی این سری پروژه بزرگتر و همینطور روی فونیکس هستم . اگر هرچیزی در مورد api نویسی برای اپلیکیشن ها خارج از وب سایت در نظر دارید لطفا به بنده انتقال بدید . فکر کنید بنده از نظر امنیتی تا به حال بسیار ضعیف عمل کردم .

  • اگر منبعی هست که وب سایت های بزرگ رو مثال بزنه چطور عمل کردند بسیار عالی می شه چون اطلاعاتی که از کاربران می گیرم بسیار براشون ارزشمند هست و لو رفتنش دیگه اعتباری برای نرم افزار های جانبی و ماهیت کار نمی زاره

تشکر

با گاردین و jwt پیشنهاد میکنم API امن کنید https://github.com/ueberauth/guardian

1 پسندیده