oss_vahid
8 ماه پیش توسط oss_vahid مطرح شد
2 پاسخ

کلید api و امنیت

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


ثبت پرسش جدید
آرتین کریمی
تخصص : طراح وب و برنامه نویس
@error.404 8 ماه پیش مطرح شد
-2

دوست عزیز
بهتره اینارو توی یه دیتابیس ذخیره کنین
یا یه آدرسی که کسی نفهمه
موفق باشید.


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 8 ماه پیش مطرح شد
1

سلام و خسته نباشید به دوست خوبم وحید جان
ببین چندین کار مختلف هست که میتونی انجام بدی
یک این که سمت فرانت اگر میتونی نوع کوکی ذخیره شده ی اون توکن خودت رو به شکل httpOnly قرار بدی که این نیاز مند یک یک سرور سمت فرانت هست مثل nextjs که نود رو داره
چیزی که من حس کردم اینه که توکن رو برای خودت توی فایل های js ذخیره کردی که از پروژه ی خودت این ارسال اطلاعات رو به سرور خودت داشته باشی
یه راه حل دیگه اینه که بحث policy ها و cors ها رو برای پروژه ی بکند خودت بررسی کنی که چطور پیادش کنی
اونم به این شکل باشه که فقط از دامنه ای که تو مشخص میکنی درخواست به بکندت بیاد مثلا منی که از لاراول استفاده میکنم پکیج سنکتوم چیزی داره به اسم SANCTUM_STATEFUL_DOMAINS که دامنه مثلا پروژه ی ری اکتی یا نکست خودم رو بهش میدم که همون localhost:3000 (پورتی که پروژه نکست من ران هست )میشه بیشتر چون هر دو توی یک سرور هستن باز هم لوکال به حساب میاد و موردی نداره

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

name="csrf-token"

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

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

پس خلاصش این که httpOnly استفاده کن
دامنه رو محدود کن
و حتما token رو همش generate بشه بسته به جایی که داری استفاده میکنی
و سطح دسترسی روت های مهم تر رو سخت تر کن و مطمین شو هر کسی نتونه حتی با توکن ارسال اطلاعات کنه (توکن ادمین و شخص عادی رو عوض کن و چندین توکن داشته باش - فرض من این بود که این توکنی که گفتی ربطی به لاگین نداره توی این توضیحم)


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

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