کیان
2 سال پیش توسط کیان مطرح شد
7 پاسخ

جلوگیری از درخواست های غیر ایمن با میدلور

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

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

از اونجایی که اپ اندرویدی از پروگارد استفاده میکنه و امکان دستیابی به اون رشته ای که درون header ارسال میشه از طریق دستکاری اپلیکیشن خیلی کم هست من رشته رو داخل هدر مستقیم میفرستم
بعدش هم اون رشته رو با base64 اومدم encode کردم و با هدر ارسال کردم و درون میدلور لاراول اون رو decode کردم و چک کردم اونی که میخواد باشه و ادامه داستان ...

حالا سوالم اینه که اولا این کار اصلی تاثیری داره برای جلوگیری از درخواست ناایمن افرادی که سعی میکنن خرابکاری کنن یا نه؟
و اینکه راهی هست برای اینکه این پروسه رو پیچیده تر کنم مثلا با cipher و با یک کلید شخصی توی اندروید encrypt رو انجام بدم و داخل لاراول با همون کلید decrypt کنم و ادامه داستان ...؟؟؟

در کل دنبال راهی هستم که یه خورده امنیت بک اند را بالا ببرم نمیدونم این راهی که رفتم فایده ای داره یا نه؟؟

ممنون میشم دوستانی که تجربه ای توی این زمینه دارن راهنمایی کنند سپاس


ثبت پرسش جدید
میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 2 سال پیش مطرح شد
0

بله با اینکار تا حد زیادی امنیت رو برقرار میکنه اما باید توی برنامه اندرویدی کلید رو توی فایل دیگه ذخیره کنی و تو کانفیک خود پروژه اون رو از فایل بخونی با اینکار دسترسی به کلید خیلی دشوار میشه و اگه کد های برنامه رو اینکریپت کنی با پروگارد یه جورایی در حد خیلی بالا اپت رو ایمن میکنی فقط کلید رو به صورت هش شده بفرست با تشکر❤


کیان
تخصص : ندارم ...
@kian.myphone 2 سال پیش مطرح شد
0

ممنون میشم دوستان و اساتید عزیز بنده رو راهنمایی کنند

@hesammousavi
@endworld


کیان
تخصص : ندارم ...
@kian.myphone 2 سال پیش مطرح شد
1

ممنون میشم اگر کسی از دوستان میتونه راهنمایی کنه
منتظر دریافت تجربیات گرانبهای شما هستم ، سپاسگزارم


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 2 سال پیش مطرح شد
0

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


کیان
تخصص : ندارم ...
@kian.myphone 2 سال پیش آپدیت شد
0

از شما ممنونم @endworld

فقط ببخشید متوجه نشدم میشه بیشتر توضیح بدید
یعنی برای هر کاربر کلید جداگانه؟

من نمیخوام کاربر رو درگیر کار خاصی بکنم میخوام هر اتفاقی هست توی کدهای خودم بیفته و کاربر متوجه و درگیر نشه

الان این روشی که من گفتم کاربرد داره به نظرتون ؟
من بیام با یک الگوریتم و کلید مخصوص خودم توی اندروید یک access key درست کنم و توی هدر همراه با هر request ارسال کنم و از طرف دیگه توی لاراول اون رو دریافت کنم و با همون کلید و الگوریتم access key رو دریافت کنم و چک کنم اگر اون رشته تعریف شده خودم بود request رو مجاز بدونم و پاسخ بدم و این کار رو توی لاراول با یک میدلور روی همه route ها اعمال کنم


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 2 سال پیش مطرح شد
0

سلام دوست عزیز ,اگه برنامه تون سیستم احراز هویت داره باید از توکن ها استفاده کنید که بعد از ثبت نام یا ورود کاربر توکن در سمت اندروید ذخیره بشه و هربار به سمت سرور ارسال بشه و روت هایی که نمیشه توکن فرستاد مثل لاگین یا رجیستر رو با header یه کلید رمزنگاری شده که از سمت اندروید ارسال میشه و سمت سرور چک میکنید ببینید درسته یا نه میتونید امنیتش رو برقرار کنید اما اگه سیستم احراز هویت نداره با همون کلید رمزنگاری از روت ها محافظت کنید


کیان
تخصص : ندارم ...
@kian.myphone 2 سال پیش مطرح شد
0

ممنون از راهنمایی تون @mikaiil عزیز
بله از سیستم احراز هویت Laravel passport استفاده میکنم و توکن و مابقی داستان ها رو هم رعایت کردم اتفاقا علاوه بر توکن یک میدلور نوشتم که هر کاربر با توکنی که ارسال می‌کنه چک میکنم و آیدی اش رو بررسی میکنم و فقط اجازه اعمال تغییرات روی رکوردهایی از جدول رو بهش میدم که مربوط به خودش باشه و در صورتیکه رکورد آیدی اش با آیدی مربوط به توکن یکی نباشه یعنی خودش نباشه متوقفش میکنم

علاوه بر این ها میخواستم روت ها رو ایمن تر کنم و بیشتر مدنظرم هست جلوگیری کنم از یک سری خرابکاری ها البته تا حد امکان ... میدونم ۱۰۰ درصد امکان پذیر نیست

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

در کل میخواستم این رو بگم چون توی اپ من شرایط استفاده از کیف پول رو برای کاربر فراهم کردم و چون بحث مالی هست می‌خوام تا جایی که میشه بحث امنیت رو برقرار کنم

سپاس


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 2 سال پیش مطرح شد
0

بله با اینکار تا حد زیادی امنیت رو برقرار میکنه اما باید توی برنامه اندرویدی کلید رو توی فایل دیگه ذخیره کنی و تو کانفیک خود پروژه اون رو از فایل بخونی با اینکار دسترسی به کلید خیلی دشوار میشه و اگه کد های برنامه رو اینکریپت کنی با پروگارد یه جورایی در حد خیلی بالا اپت رو ایمن میکنی فقط کلید رو به صورت هش شده بفرست با تشکر❤


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام