en
Feedback
My Back-End Experience❤️

My Back-End Experience❤️

Open in Telegram

روزمرگی های یک Backend devloper https://t.me/my_backend_experience

Show more
Buy Ad
164
Subscribers
-124 hours
-17 days
-530 days
Posts Archive
برای امروز کافیه فعلا همین رو داشته باشیم تا بعد دوباره یک سناریو تکمیل تری پیش بریم که کامل بشه 🍺

این به این حالت میشه که ما به درخواست های ورودی یک جی پی اس میزنیم و اون ها رو ترک میکنیم و باعث میشه که بتونیم به ایپی دقیق واقعی دسترسی داشته باشیم حالا با دسترسی به ایپی دقیق تر میتونیم حتی یک middelware داشته باشیم که درخواست از ایپی مشخصی رو ببندیم

حالا این چرا اهمیت داشت گفتیم ؟ چرا لوپ بک مهم شد؟ نیاز به تکرار نداریم که دقیقا الان ایپی ها زمانی پروکسی میشن به چه شکل میشه حالا این مثال برسی کنیم
X-Forwarded-For: 203.0.113.42, 198.51.100.1, 127.0.0.1
اولین ایپی از سمت راست دقیقا ایپی هستش که نزدیک ترین به اپلیکیشن خودمون یعنی از پروکسی کننده اومده! اما اولی از سمت چپ ایپی اورجینالی که یک درخواست کننده زده اما ما باید فقط فقط ایپی هایی رو اجازه بدیم که بهشون اعتماد داریم و گرنه هر هدری میشه ایپی هاش دستکاری بشه

حالا میخوام یکم دیگه عمیق بشیم و یه یاد اوری بکنیم! loopback , ip باهم برسی کنیم که دقیقا چی بودن ،‌چون درک درست زمانی که بشه تا جایی که جا داره عمیق شد ip به درک خیلی ساده یعنی ادرس دیوایسی که به اینترنت وصل میشه loopback ادرس ایپی که دیوایس ها ست میکنن روی خودشون تا بتونن بدون ارسال کردن دیتا به خودشون درخواست بزنن که معروف ترینشون 127.0.0.1 هستش! ip /8 عموما هم ما دیدیم که این / هست! این یعنی چی؟ یعنی به تعداد بیت مشخص شده مثلا /8 هشت بیت اول اون ایپی ثابت هستش و باقی ایپی متغییر

روش دوم ست کرددن مقدار به صورت IP و یا loopback و یا ip به همراه loopback در این حالت ما به اکپرس میگیم که پذیرا چهip هایی باشد و بقیه رو رد کنه از اونجایی که درخواست ما توسط یک پروکسی درحال ارسال به اکسپرس ایپی درخواست همونطور که گفتیم میشه ایپی پروکسی مثلا ایپی nginx و ایپی اوریجنال درخواست توی هدل با X-forwarded-for قابل دسترس در این حالت اکسپرس میاد چیکار میکنه؟ از هدر های x-forwarded-for ایپی رو یکی یکی از راست به چپ میخونه و نسبت به اون چیزی که شما تایین کردین ولیدیت میکنه . درخواست هایی که ایپی درستی دارن رد میشن و داخل میرن اما در اولین اپی غیرقابل اعتماد اکسپرس درخواست متوقف میکنه و مانع رسیدنش میشه

حالا خارج از مبحث اکسپرس میخوام درباره یک هدر که همیشه بهش بر میخوریم صحبت کنم! X-Forwarded-For X-Forwarded این هدر ها همیشه بهشون بر میخوریم اما یعنی چی؟ X-Forwarded-For and related X-Forwarded-* headers are HTTP request headers used to identify the original client IP address and other request context when the request passes through proxies, load balancers, or reverse proxies (e.g., Nginx, Cloudflare, AWS ELB). این هدر ها و هدر های مشابه زمانی استفاده میشه که شما درخواستت پروکسی بشه یا از لودبالانسری رد بشه حالا چیه؟ بخاطر این هستش که بتونید context درخواستی که پروکسی شده داشته باشید و بتونید از اون استفاده کنید اما یک نکته ای! هدر به راحتی spoof میشه و قابل تغییر ! یعنی به راحتی میشه تغییرش داد و اگر ولیدیشنی نباشه میتونه درخواست یک راست بفرسته به جایی که نباید و باگ امنیتی ایجاد بکنه

حالا چطوری ست کنیم؟! اکسپرس به ۴ حالت اجازه ست کردن trust proxy به ما میده در حالت اول که مقدار boolean قبول میکنه اگر به tru
حالا چطوری ست کنیم؟! اکسپرس به ۴ حالت اجازه ست کردن trust proxy به ما میده در حالت اول که مقدار boolean قبول میکنه اگر به true ست بشه ایپی که درخواست میده به سرویس از هدر X-Forwarded-For خونده میشه و قبول میشه ولی اگر مقدار به false ست بشود اپلیکیشن شما درخواست پروکسی شده رو قبول نخواهد کرد!

نکته خیلی مهم! زمانی که ما trust proxy ست میکنیم ! باید روش حساس باشیم چرا؟! چون داریم اجازه میدیم که اپلیکیشن هر درخواستی رو قبول بکنه و این هشداری که داکیومنت خود اکسپرس در اینباره داده نوار ابی رنگ

درخواست بدون ست کرن trust proxy به این شکل میشه اون authorization هم که داخل تصویر بخاط اکستنش که نصب دارم و هدر های یکسری اد
درخواست بدون ست کرن trust proxy به این شکل میشه اون authorization هم که داخل تصویر بخاط اکستنش که نصب دارم و هدر های یکسری ادرس های خاص تغییر میده دقت کنید! مقدار ایپی به این شکل هست ::ffff:172.28.0.3 خب این ایپی داخل داکر که داره از انجین ایکس خونده میشه ! و خب اینجا این درخواست مشخص نیست از کجا اومده و فقط رسیده

برای مثال اگر یک کانفیگ revers proxy داشته باشیم به این شکل
برای مثال اگر یک کانفیگ revers proxy داشته باشیم به این شکل

زمانی که اپلیکیشن ما پشت یک پروکسی یا لودبلانسری قرار میگیره ممکن رفتار متقاوت تری نسب به حالت مستقیم نشون بده. حالا چرا؟ چون
زمانی که اپلیکیشن ما پشت یک پروکسی یا لودبلانسری قرار میگیره ممکن رفتار متقاوت تری نسب به حالت مستقیم نشون بده. حالا چرا؟ چون پروکسی ها یکسری هدر اضافه هم همراه خودشون ست میکنن شاید یجایی مشکل برامون ایجاد بکنه حالا از اون مهم تر این هستش زمانی که شما میخواید با آیپی که درخواست ازش میاد استفاده کنید اگر ست نکنید این مورد رو باعث میشه به جای ایپی درخواست ایپی لود بالانسر یا پروکسی که به صورت internal هم هست ست بشه

#expres_deep@my_backend_experience Trust proxy https://expressjs.com/en/guide/behind-proxies.html

تصمیم گرفتم که یکمی دیپ بشیم داخل express و بریم داخل ببینیم چخبره به صورت دیلی شاید پشت سر هم نه ولی وقت کنم میخوام که به عمق بریم و برسیش کنیم و بخونیمش 😄

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

#shot@my_backend_experience
#shot@my_backend_experience

photo content

قسمت جدید آخر هفته با من داریم 😁😄. یادتون نره که با لایک و کامنت هاتون انرژی بدین 🔥 https://youtu.be/mkY8b-L8l90

بیکلام ، خوراک تمرکز و آرامش ذهن 😋