آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

doost_fu  7 سال پیش  7 سال پیش
0 0

سلام 
دوستان یه برنامه وب سرویس دارم که اطلاعات از طریق volley میگیرم
در قسمت دیگه ای از برنامه امکان ارسال متن و تصویر برای کاربر وجود داره که در دیتابیس جداگانه ذخیره میشه

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

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

الان سوالم اینه برای امنیت این ارتباطات باید چیکار کرد ؟
و اینکه اگه الان به همین شکل برنامه منتشر بشه و مثلا شما لینک api داشته باشید غیر اینکه بتونید اطلاعات بگیرید دیگه چه خطری من و نرم افزارمو  تهدید میکنه ؟

ممنون میشم این موضوع شفاف توضیح بدید

+1 0
سلام دوست عزیز. چیزایی که من در مورد امنیت میدونم شاید بعضی از موارد کامل نباشه. وقتی که ارسال اطلاعات به سرور داری باید مراقب باشی که کدای sql اینجکشن نداشته باشن، ولی اگه فقط دریافت اطلاعات هست میتونی اطلاعاتتو سمت سرور encode کنی و سمت اپ decode که بازم اگه طرف واقعا وارد باشه می تونه اطلاعتتو decode کنه و بخونه، ولی در کل این حالتی که شما بیان کردی به نظر من مورد امنیتی نداره (7 سال پیش)
0 0
خیلی ممنون ببینید من اطلاعاتی که از سرور دریافت میکنم چیزای مهمی نیستند که کسی بخواد اونارو بخونه ! همون اخبار و سایر مطالبی هست که از وب سایت های مختلف بر میدارم و داخل سرور قرار میدم و منبع اونا هم ذکر میشه و داخل برنامه نشون داده میشه و یه قسمت دیگه دارم که کاربر بتونه مثلا تصویر یا یه متن برام ارسال کنه که این داخل یه جدول دیتابیس مجزا ذخیره میشه و بعد من اونارو کپی و مثلا داخل دیتابیس تصاویر قرار میدم . (7 سال پیش)
0 0
من از نظر خود مطالب مشکلی ندارم چون کسی دنبالش نیست ولی من می خوام بدونم کسی میتونه هدف دیگه ای داشته باشه و به راحتی اون کارو انجام بده ؟ مثلا از کار انداختن ، تحریف و تغییر مطالب ، و اینگونه موارد خرابکارانه ! می خوام این قضیه یک برام شفاف بشه بازم ممنون (7 سال پیش)
0 0
در نظر داشته باشید برنامه حالت یه مجله خبری اجتماعی هست که خبر ، مطلب ، تصویر و یدئو داخلش قرار میگیره و فقط مربوط به یک شهر می باشد (7 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
kazemian  7 سال پیش
+1 0

سلام دوست عزیز
یکی از کارهایی که باید انجام بدین  ، مواظب باشین باگ Sql injection نداشته باشین ، از طریق این باگ میشه اطلاعاتی که توی جدول های دیتابیستون ذخیره شده رو بیرون کشید

دومین مورد پیشنهاد می کنم از ssl استفاده کنین تا دیتایی که بین کلاینت و سرور رد و بدل میشه قابل شنود نباشه

و اینکه در جاهایی که نیاز هست سعی کنین از توکن استفاده کنین تا کسی خارج از نرم افزار شما ، نتونه به اون api درخواست بفرسته ، مثلا فرض کنید یکی از متدهاتون کار insert یک مقداری رو در دیتابیس انجام میده ، حالا اگه url اون متد رو بدونم میتونم خارج از نرم افزار با یک حلقه while بی نهایت ، مقدار زیادی داده insert کنم.
یه سری کارهای دیگه هم هست که میشه انجام داد اما همین موارد هم تاحد زیادی کارتون رو راه میندازه

0 0
خیلی ممنون بابت توضیحات ، یه خورده تحقیق کردم فکر کنم در مورد یه نرم افزار مثل برنامه من ، همون رفع باگ Sql injection که گفتید کفایت کنه فقط راههای متفاوتی در جاهای مختلف گفته شده می تونید برا پیادسازی این مورد در اندروید یا php راهنماییم کنید ممنون (7 سال پیش)
پاسخ به سوال 
Criss  7 سال پیش
+1 0

شما نیازی به امنیت اطلاعاتتون ندارید ، پس نیازی به دیکد کردن اونها روی دیتابیس نیست ، کل منابع و دیتابیستون هم لو بره اهمیتی ایجاد نمیکنه ! تنها مسائلی ایی که نیاز دارید این هست که از https استفاده که حداقل کمکی کرده باشه که اسنیف نشید ، اسنیف شدن باعث میشه URL شما همراه با پارامترهای ارسالی لو بره ، که هرکسی به راحتی میتونه با سرور شما و API ایی که دارید ارتباط برقرار کنه ، مثلا با یه حلقه FOR میشه خیلی راحتر چندهزار دیتا با دیتابیستون اضافه کرد و این براتون دردسرساز میشه ، و اینکه برای رکوئست هایی که به سمت سرور میزنید ، یک کلید قرار بدید که فقط شما بتونید با سرور ارتباط داشته باشید ، برای ساخت کلید یکی از راه های موثر استفاده از AES هست ولی در ساده ترین حالت شما میتونید یک جیسون آبجکت داشته باشید که شامل دو کلید هست یک کلید که نشون میده شما چه دیتایی رو میخاید و کلید دوم که یک راندوم هش هست ، حالا این جیسون رو به base64 تبدیل کنید در تمامی رکوئیست های ارسالی از این مورد استفاده کنید اگر آموزش های استاد رو دیده باشید جای مناسب برای استفاده از این کلید در پارامتر action هست

دقت کنید base64 به راحتی قابل خوندن هست و اصلا به امنیت کمک نمیکنه ، ولی در صورتی که قبلا تجربه ایی در استفاده از AES نداشتید برای درک موضوع بهتون کمک میکنه و اینکه خیلی ساده هم هست پیشنهاد میکنم کل مقدار base64 شده رو تقسیم به دو قسمت کنید و سروته به سرور بفرستید !

نمونه جیسون

 {"action":"get_news","random_hash":"87564534154"}

نمونه کد PHP

 if(action==get_news){}

نمونه encode شده جیسون به base64 که سمت php باید decode بشه

 eyJhY3Rpb24iOiJnZXRfbmV3cyIsInJhbmRvbV9oYXNoIjoiODc1NjQ1MzQxNTQifQ==

لینک های مفید :

https://www.base64encode.org/
https://stackoverflow.com/questions/7360403/base-64-encode-and-decode-example-code
https://stackoverflow.com/questions/1374753/passing-base64-encoded-strings-in-url
https://stackoverflow.com/questions/18842075/decode-base64-string-php

پاسخ به سوال 
doost_fu  7 سال پیش
0 0

خیلی ممنون از توضیحاتتون ولی من چون اولین کارم در مورد وب سرویس هست یکم گیج شدم !

من اطلاعاتی که دارم مهم نیستند چیزی که متوجه شدم  فقط باید جلو اینو بگیرم که تا حد امکان کسی نتونه غیر از داخل برنامه ، برای api درخواست بفرسته .
یه api جهت ارسال مطلب همراه با تصویر دارم که داخل دیتابیس خودش ذخیره میکنه ،
چندتا api برای  دریافت از چند بخش دیگه دارم که از دیتابیس های خودشون خبر ، مطلب و ... برای کاربر نشون میده .

الان برای اینکه یه کلید یا پسورد همراه با درخواست برای api بفرستم از چه راهی باید استفاده کرد ؟
و یه چیزی که برام مبهم شده ، ما اگه همون کلید مستقیم ارسال کنیم خب کسی که بتونه url بخونه کلید ارسالی هم می خونه دیگه !
اگه کلید رمزگذاری شده باشه ، داخل api باید به شکل قبلی برگرده و با یه چیزی مقایسه بشه ؟ یعنی مقدار کلید داخل api هم هست ؟

اگه میشه در این مورد راهنمایی کنید یا لینک یه اموزش پروژه محور معرفی کنید که متوجه بشم / با تشکر


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .