A Write-Up
📌 در این رایت آپ درمورد اکسپلویت و نحوه بایپس باگ Race Condition در یک سامانه ایرانی را مورد بررسی قرار داده اند و که موجی افزایش چند برابری شارژ کیف پول در سامانه شده است و ...
📌
#Write_up #Race_condition
https://www.huntlearn.com/blogs/Unlimited-wallet-recharge-in-one-of-the-well-known-Iranian-platforms
📌 در این رایت آپ درمورد اکسپلویت و نحوه بایپس باگ Race Condition در یک سامانه ایرانی را مورد بررسی قرار داده اند و که موجی افزایش چند برابری شارژ کیف پول در سامانه شده است و ...
📌
This write-up is about an Iranian system that has led to the discovery of a Race Condition bug, which has been exploited by hackers. In this write-up, the parameters and the process of testing the Race Condition bug are thoroughly explained, and you can study it; therefore...
#Write_up #Race_condition
https://www.huntlearn.com/blogs/Unlimited-wallet-recharge-in-one-of-the-well-known-Iranian-platforms
A Article
📌 در این مقاله درمورد نحوه های بایپس آپلود فایل های php و....
پرداخته شده و بسیار جامع روش های بایپس گفته شده و ابزار هایی معرفی شده است
اطلاعات بیشتر:
#Article #bypass
https://swisskyrepo.github.io/PayloadsAllTheThings/Upload%20Insecure%20Files/#filename-vulnerabilities
📌 در این مقاله درمورد نحوه های بایپس آپلود فایل های php و....
پرداخته شده و بسیار جامع روش های بایپس گفته شده و ابزار هایی معرفی شده است
از روش های بایپس میتوان به مثال هایی درمورد فایل های php. اشاره کرد
.php1
.php5
.php7
.php%00.png
.php\x00.gif
.php.jpg
.png.php5
.phtml
.phtm
یا روش های بایپس از قسمت Content-Type درخواست مانند کانتنت تایپ های زیر
application/x-php
application/octet-stream
image/png
application/vnd.hzn-3d-crossword
video/3gpp
video/3gpp2
application/vnd.mseq
application/vnd.3m.post-it-notes
application/vnd.3gpp.pic-bw-large
application/vnd.3gpp.pic-bw-small
application/vnd.3gpp.pic-bw-var
application/vnd.3gpp2.tcap
application/x-7z-compressed
application/x-abiword
application/x-ace-compressed
application/vnd.americandynamics.acc
application/vnd.acucobol
application/vnd.acucorp
اطلاعات بیشتر:
یا اینکه در این مقاله درمورد آسیب پذیری های Filename صحبت شده است که چگونه با این آسیب پذیری SQLI یا LFI و... را اجرا کنید و اکسپلویت کنید برای مثال پیلود های زیر
-poc.js'(select*from(select(sleep(20)))a)+'.extension
-image.png../../../../../../../etc/passwd
-'"><img src=x onerror=alert(document.domain)>.extension
-../../../tmp/lol.png
و...
#Article #bypass
https://swisskyrepo.github.io/PayloadsAllTheThings/Upload%20Insecure%20Files/#filename-vulnerabilities
swisskyrepo.github.io
Upload Insecure Files - Payloads All The Things
Payloads All The Things, a list of useful payloads and bypasses for Web Application Security
Celeste – Both Sides Of The Moon.mp3
9.8 MB
🎧 A Music for your soul and your mind
📖 NGINX Cookbook
📌 کتاب "NGINX Cookbook" یک منبع مفید برای یادگیری و استفاده از NGINX، وبسرور محبوب و معکوسساز پروکسی است. این کتاب معمولاً شامل مجموعهای از دستورالعملها، نکات و ترفندها برای پیکربندی و بهینهسازی NGINX در سناریوهای مختلف است.
📌
#book #nginx_cookbook #server_book
📌 کتاب "NGINX Cookbook" یک منبع مفید برای یادگیری و استفاده از NGINX، وبسرور محبوب و معکوسساز پروکسی است. این کتاب معمولاً شامل مجموعهای از دستورالعملها، نکات و ترفندها برای پیکربندی و بهینهسازی NGINX در سناریوهای مختلف است.
📌
The book "NGINX Cookbook" is a valuable resource for learning and using NGINX, the popular web server and reverse proxy. This book typically includes a collection of instructions, tips, and tricks for configuring and optimizing NGINX in various scenarios.
#book #nginx_cookbook #server_book
📖 What I Wish I Knew When I Was 20
📌 کتاب "What I Wish I Knew When I Was 20" نوشتهٔ تینا سلی (Tina Seelig) به بررسی تجربیات و درسهایی میپردازد که نویسنده در طول زندگیاش آموخته است.
📌 The book "What I Wish I Knew When I Was 20" by Tina Seelig explores the experiences and lessons the author has learned throughout her life.
#book #better_life_book #Psychology
📌 کتاب "What I Wish I Knew When I Was 20" نوشتهٔ تینا سلی (Tina Seelig) به بررسی تجربیات و درسهایی میپردازد که نویسنده در طول زندگیاش آموخته است.
این کتاب به عنوان یک راهنمای الهامبخش و عملی برای جوانان عمل میکند و به آنها کمک میکند تا با چالشهای مختلفی که ممکن است در این دوره از زندگی با آنها مواجه شوند، بهتر کنار بیایند.
📌 The book "What I Wish I Knew When I Was 20" by Tina Seelig explores the experiences and lessons the author has learned throughout her life.
This book serves as an inspiring and practical guide for young people, helping them to better navigate the various challenges they may face during this stage of life
#book #better_life_book #Psychology
Life and Learning🎭
📖 What I Wish I Knew When I Was 20 📌 کتاب "What I Wish I Knew When I Was 20" نوشتهٔ تینا سلی (Tina Seelig) به بررسی تجربیات و درسهایی میپردازد که نویسنده در طول زندگیاش آموخته است. این کتاب به عنوان یک راهنمای الهامبخش و عملی برای جوانان عمل میکند و…
در پلتفرم ایرانی :
https://taaghche.com/book/57502
In the other Platform :
https://www.amazon.com/What-Wish-Knew-When-Was/dp/0062047418
https://taaghche.com/book/57502
In the other Platform :
https://www.amazon.com/What-Wish-Knew-When-Was/dp/0062047418
طاقچه
کتاب کاش وقتی بیست ساله بودم می دانستم تینا سیلیگ + دانلود نمونه رایگان
کتاب کاش وقتی بیست ساله بودم می دانستم ترجمه مینا صفری از انتشارات میلکان با قیمت ویژه | ۳۰درصد تخفیف برای اولین خرید
قانون پارکینسون (Parkinson's law) میگه: «هر کار به اندازه زمانی که برای آن تخصیص داده شده طول میکشد.» یعنی اگه یک هفته بهت وقت بدن مقالهای رو بنویسی، نوشتن اون مقاله یک هفته طول میکشه. اگه یک ماه بهت وقت بدن برای همون مقاله، نوشتنش یک ماه میبره.
شاید برای نوشتن اون مقاله سی روز بهت وقت بدن. اما عین ۲۵ روزش رو به بطالت میگذرونی و کاری نمیکنی، پنج روز مونده به ارائه، پنیک میزنی و فولتایم روش کار میکنی و احتمالش زیاده که کار رو خیلی خوب هم تحویل بدی. یا اگه بهت بگن این شیر آب داخل حیاط رو طی این هفته درست کن، اون کار رو تا روز آخر انجام نمیدی. خیلی از کارای زندگی ما همینه. احساس میکنیم اگه وقت بیشتری داشته باشیم، کیفیت کار بالاتر میره و تمرکزمون هم برای انجام دادنش بیشتره. اما واقعیت اینه، پس ذهنمون محاسبه میکنیم و میدونیم که این کار مشخص، چقدر زمان میخواد. پس انجامش نمیدیم تا روز موعود. مشخص کردن ددلاین تو انجام کارها خیلی مهمه. اگر ددلاینی نباشه انجام اون کار تا ابد طول میکشه.
#article #copy_of_other_channel
شاید برای نوشتن اون مقاله سی روز بهت وقت بدن. اما عین ۲۵ روزش رو به بطالت میگذرونی و کاری نمیکنی، پنج روز مونده به ارائه، پنیک میزنی و فولتایم روش کار میکنی و احتمالش زیاده که کار رو خیلی خوب هم تحویل بدی. یا اگه بهت بگن این شیر آب داخل حیاط رو طی این هفته درست کن، اون کار رو تا روز آخر انجام نمیدی. خیلی از کارای زندگی ما همینه. احساس میکنیم اگه وقت بیشتری داشته باشیم، کیفیت کار بالاتر میره و تمرکزمون هم برای انجام دادنش بیشتره. اما واقعیت اینه، پس ذهنمون محاسبه میکنیم و میدونیم که این کار مشخص، چقدر زمان میخواد. پس انجامش نمیدیم تا روز موعود. مشخص کردن ددلاین تو انجام کارها خیلی مهمه. اگر ددلاینی نباشه انجام اون کار تا ابد طول میکشه.
#article #copy_of_other_channel
📖 WEB Security Testing Guide
📌 کتاب "web security testing Guide" یک کتاب راهنمای استاندارد برای تست نفوذ آسیب پذیری های وب است که به صورت کامل به آنها پرداخته شده در این کتاب
📌 In the book web security testing guide, it is said about web penetration testing methods and web vulnerabilities
#book #Vulnerability #security_testing
📌 کتاب "web security testing Guide" یک کتاب راهنمای استاندارد برای تست نفوذ آسیب پذیری های وب است که به صورت کامل به آنها پرداخته شده در این کتاب
📌 In the book web security testing guide, it is said about web penetration testing methods and web vulnerabilities
#book #Vulnerability #security_testing
Write-Up
📌 یک رایت آپ خوب درمورد باگ Race condition که یکی از هکر های ایرانی آن را پیدا کرده بود در یکی از تارگت های جنرال پلتفرم های باگ بانتی.
📌 A good write-up on the subject of Race Condition, which explains the methodology and details about hunting this bug.
https://medium.com/@mohamed.yasser442200/email-verification-bypass-due-to-race-condition-8e4492313208
#Write_up
#Race_Condition
📌 یک رایت آپ خوب درمورد باگ Race condition که یکی از هکر های ایرانی آن را پیدا کرده بود در یکی از تارگت های جنرال پلتفرم های باگ بانتی.
📌 A good write-up on the subject of Race Condition, which explains the methodology and details about hunting this bug.
https://medium.com/@mohamed.yasser442200/email-verification-bypass-due-to-race-condition-8e4492313208
#Write_up
#Race_Condition
URL Structure
ساختار URL همون آدرسیه که توی مرورگر وارد میکنیم تا به یه صفحه وب برسیم. هر قسمت از این آدرس یه معنی خاص داره و مرورگر با خوندن این بخشها میفهمه باید کجا بره و چیکار کنه.
بیایم این آدرس رو بررسی کنیم:
بخشهای مختلف URL:
پروتکل (https):
این همون اول URL هست که مشخص میکنه از چه روشی میخوایم به سرور وصل بشیم. مثل HTTPS (که امنه) یا HTTP (که امن نیست).
اعتبارنامهها (username@):
گاهی توی URL، قبل از @ یه چیزی میبینیم مثل username:password. اینجا اطلاعات ورود به سیستم قرار داره که مرورگر ازش برای ورود به سایت استفاده میکنه. البته خیلی رایج نیست که تو URL این اطلاعات رو بذارن، ولی اگه دیدی، بدون که اطلاعات ورود (credentials) اونجاست.
دامنه (example.com):
این همون اسم سایت یا سرور اصلیه که میخوایم بهش وصل بشیم. مثلاً توی اینجا، example.com همون سایته که قراره مرورگر ما بهش بره.
پورت (:443):
بعد از دامنه اگه یه عددی دیدی، اون پورت سروره. پورت 443 برای HTTPS استفاده میشه و اگه این عدد نباشه، مرورگر خودش میفهمه که از پورت پیشفرض (مثلاً 80 برای HTTP یا 443 برای HTTPS) استفاده کنه.
مسیر (file.html):
اینجا هم مسیریه که میخوایم تو سایت ببینیم. یعنی مرورگر میره توی اون سایت و دنبال یه فایلی به اسم file.html میگرده. همون قسمتی از URL که بعد از / میاد، همون مسیره که میگه توی سرور به کدوم فایل یا صفحه بری.
پارامترها (?parameter=value):
بعد از ? یه سری اطلاعات اضافی میاد که مرورگر به سرور میفرسته. اینا میتونن هر چیزی باشن، مثل فیلتر کردن نتایج یا اطلاعاتی که باید به سرور بدیم. مثلاً parameter=value یعنی یه پارامتری به اسم parameter داریم که مقدارش value هست.
فرگمنت (#fragment):
این بخش بعد از # میاد و به مرورگر میگه که بره به یه جای خاص توی صفحه. مثلاً وقتی تو یه صفحه وب، یه قسمت خاص رو هایلایت میکنه یا به همون قسمت اسکرول میکنه.
خلاصه: URL شبیه یه نقشهست که به مرورگر میگه از چه طریقی، به کدوم سایت بره، از کدوم پورت استفاده کنه، کدوم فایل رو باز کنه، چه اطلاعاتی رو بفرسته و توی کدوم قسمت از صفحه قرار بگیره.
#url_Informatiom
https://username:password@example.com:443/file.html?parameter=value#fragment
ساختار URL همون آدرسیه که توی مرورگر وارد میکنیم تا به یه صفحه وب برسیم. هر قسمت از این آدرس یه معنی خاص داره و مرورگر با خوندن این بخشها میفهمه باید کجا بره و چیکار کنه.
بیایم این آدرس رو بررسی کنیم:
بخشهای مختلف URL:
پروتکل (https):
این همون اول URL هست که مشخص میکنه از چه روشی میخوایم به سرور وصل بشیم. مثل HTTPS (که امنه) یا HTTP (که امن نیست).
اعتبارنامهها (username@):
گاهی توی URL، قبل از @ یه چیزی میبینیم مثل username:password. اینجا اطلاعات ورود به سیستم قرار داره که مرورگر ازش برای ورود به سایت استفاده میکنه. البته خیلی رایج نیست که تو URL این اطلاعات رو بذارن، ولی اگه دیدی، بدون که اطلاعات ورود (credentials) اونجاست.
دامنه (example.com):
این همون اسم سایت یا سرور اصلیه که میخوایم بهش وصل بشیم. مثلاً توی اینجا، example.com همون سایته که قراره مرورگر ما بهش بره.
پورت (:443):
بعد از دامنه اگه یه عددی دیدی، اون پورت سروره. پورت 443 برای HTTPS استفاده میشه و اگه این عدد نباشه، مرورگر خودش میفهمه که از پورت پیشفرض (مثلاً 80 برای HTTP یا 443 برای HTTPS) استفاده کنه.
مسیر (file.html):
اینجا هم مسیریه که میخوایم تو سایت ببینیم. یعنی مرورگر میره توی اون سایت و دنبال یه فایلی به اسم file.html میگرده. همون قسمتی از URL که بعد از / میاد، همون مسیره که میگه توی سرور به کدوم فایل یا صفحه بری.
پارامترها (?parameter=value):
بعد از ? یه سری اطلاعات اضافی میاد که مرورگر به سرور میفرسته. اینا میتونن هر چیزی باشن، مثل فیلتر کردن نتایج یا اطلاعاتی که باید به سرور بدیم. مثلاً parameter=value یعنی یه پارامتری به اسم parameter داریم که مقدارش value هست.
فرگمنت (#fragment):
این بخش بعد از # میاد و به مرورگر میگه که بره به یه جای خاص توی صفحه. مثلاً وقتی تو یه صفحه وب، یه قسمت خاص رو هایلایت میکنه یا به همون قسمت اسکرول میکنه.
خلاصه: URL شبیه یه نقشهست که به مرورگر میگه از چه طریقی، به کدوم سایت بره، از کدوم پورت استفاده کنه، کدوم فایل رو باز کنه، چه اطلاعاتی رو بفرسته و توی کدوم قسمت از صفحه قرار بگیره.
#url_Informatiom
HTTP Methods
1. GET
این متد برای گرفتن اطلاعات از سرور استفاده میشه. وقتی توی مرورگر آدرس یه سایت رو وارد میکنی یا روی یه لینک کلیک میکنی، مرورگر یه درخواست GET میفرسته تا اون صفحه رو برات بگیره.
در ضمن، GET میتونه اطلاعاتی رو هم به سرور بفرسته، اما این اطلاعات بهجای اینکه توی بدنه (body) درخواست باشه، مستقیماً توی URL قرار میگیره. برای همین، اگه اطلاعات حساسی مثل پسورد داری، نباید از GET استفاده کنی.
مثال ساده:
وقتی یه صفحه از وبسایت رو میخوای ببینی، با GET درخواست میدی که اون صفحه رو برات بیاره. یا مثلاً وقتی میخوای توی یه فرم جستجو کنی، میتونی با GET پارامترهای جستجو رو توی URL بفرستی:
example.com/search?query=something
نکته مهم:
پارامترهایی که توی GET میفرستی، مستقیم توی URL قرار میگیرن، پس برای ارسال دادههای حساس مناسب نیست.
همچنین GET فقط برای گرفتن اطلاعاته و نباید چیزی رو توی سرور تغییر بده.
2. POST
این متد برای ارسال اطلاعات به سرور استفاده میشه. وقتی توی فرم یه چیزی وارد میکنی و روی دکمه "ارسال" کلیک میکنی، درخواست POST میره تا اطلاعات رو به سرور بفرسته.
مثال ساده:
وقتی یه فرم ثبتنام رو پر میکنی و میخوای اطلاعاتت رو بفرستی، POST استفاده میشه.
نکته مهم:
اطلاعاتی که ارسال میکنی توی URL نمایش داده نمیشه، بلکه به صورت پنهانی فرستاده میشه و معمولاً دادهها رو به سرور اضافه یا تغییر میده.
3. PUT
این متد برای آپدیت یا جایگزینی اطلاعات روی سرور استفاده میشه. اگه بخوایم یه فایل یا اطلاعاتی رو توی سرور جایگزین کنیم، از PUT استفاده میکنیم.
مثال ساده:
فرض کن میخوای یه پروفایل کاربری رو تغییر بدی؛ درخواست PUT میفرسته تا اطلاعات قدیمی رو با اطلاعات جدید جایگزین کنه.
نکته مهم:
PUT اطلاعاتی که از قبل وجود دارن رو کاملاً جایگزین میکنه.
4. PATCH
این متد هم مثل PUT برای آپدیت استفاده میشه، ولی فرقش اینه که فقط اون بخش از اطلاعات که تغییر کردن رو عوض میکنه، نه همه چیز رو.
مثال ساده:
اگه فقط بخوای اسم کاربری رو تغییر بدی، درخواست PATCH میفرسته تا فقط همون بخش رو آپدیت کنه و بقیه اطلاعات سر جاش بمونن.
5. DELETE
همونطور که از اسمش پیداست، این متد برای حذف کردن اطلاعات از سرور استفاده میشه.
مثال ساده:
وقتی میخوای یه پست یا یه چیزی رو از سرور پاک کنی، درخواست DELETE میفرستی.
6. HEAD
این متد شبیه GET هست، ولی فقط سرصفحهها (header) رو از سرور میگیره، بدون اینکه خود محتوا رو دریافت کنه.
مثال ساده:
اگه بخوایم فقط چک کنیم که یه صفحه وجود داره یا نه، بدون اینکه کل محتوا رو دانلود کنیم، از HEAD استفاده میکنیم.
7. OPTIONS
این متد از سرور میپرسه که چه متدهایی برای یک منبع (resource) خاص در دسترسه. یعنی میپرسه: "میتونم با این منبع چیکار کنم؟"
مثال ساده:
اگه بخوایم بفهمیم چه متدهایی (GET، POST و غیره) برای یه URL خاص پشتیبانی میشه، از OPTIONS استفاده میکنیم.
8. CONNECT
این متد برای ایجاد یه کانال ارتباطی امن (مثل HTTPS) بین کلاینت و سرور استفاده میشه.
مثال ساده:
وقتی میخوای یه اتصال امن مثل HTTPS راه بندازی، مرورگر از CONNECT استفاده میکنه.
9. TRACE
این متد برای دیباگ کردن مسیر یه درخواست بین مرورگر و سرور استفاده میشه. سرور درخواست رو همونطور که دریافت کرده، برمیگردونه.
مثال ساده:
اگه بخوایم بررسی کنیم که یه درخواست دقیقاً چه مسیری رو طی کرده تا به سرور برسه، از TRACE استفاده میکنیم.
#Methods
1. GET
این متد برای گرفتن اطلاعات از سرور استفاده میشه. وقتی توی مرورگر آدرس یه سایت رو وارد میکنی یا روی یه لینک کلیک میکنی، مرورگر یه درخواست GET میفرسته تا اون صفحه رو برات بگیره.
در ضمن، GET میتونه اطلاعاتی رو هم به سرور بفرسته، اما این اطلاعات بهجای اینکه توی بدنه (body) درخواست باشه، مستقیماً توی URL قرار میگیره. برای همین، اگه اطلاعات حساسی مثل پسورد داری، نباید از GET استفاده کنی.
مثال ساده:
وقتی یه صفحه از وبسایت رو میخوای ببینی، با GET درخواست میدی که اون صفحه رو برات بیاره. یا مثلاً وقتی میخوای توی یه فرم جستجو کنی، میتونی با GET پارامترهای جستجو رو توی URL بفرستی:
example.com/search?query=something
نکته مهم:
پارامترهایی که توی GET میفرستی، مستقیم توی URL قرار میگیرن، پس برای ارسال دادههای حساس مناسب نیست.
همچنین GET فقط برای گرفتن اطلاعاته و نباید چیزی رو توی سرور تغییر بده.
2. POST
این متد برای ارسال اطلاعات به سرور استفاده میشه. وقتی توی فرم یه چیزی وارد میکنی و روی دکمه "ارسال" کلیک میکنی، درخواست POST میره تا اطلاعات رو به سرور بفرسته.
مثال ساده:
وقتی یه فرم ثبتنام رو پر میکنی و میخوای اطلاعاتت رو بفرستی، POST استفاده میشه.
نکته مهم:
اطلاعاتی که ارسال میکنی توی URL نمایش داده نمیشه، بلکه به صورت پنهانی فرستاده میشه و معمولاً دادهها رو به سرور اضافه یا تغییر میده.
3. PUT
این متد برای آپدیت یا جایگزینی اطلاعات روی سرور استفاده میشه. اگه بخوایم یه فایل یا اطلاعاتی رو توی سرور جایگزین کنیم، از PUT استفاده میکنیم.
مثال ساده:
فرض کن میخوای یه پروفایل کاربری رو تغییر بدی؛ درخواست PUT میفرسته تا اطلاعات قدیمی رو با اطلاعات جدید جایگزین کنه.
نکته مهم:
PUT اطلاعاتی که از قبل وجود دارن رو کاملاً جایگزین میکنه.
4. PATCH
این متد هم مثل PUT برای آپدیت استفاده میشه، ولی فرقش اینه که فقط اون بخش از اطلاعات که تغییر کردن رو عوض میکنه، نه همه چیز رو.
مثال ساده:
اگه فقط بخوای اسم کاربری رو تغییر بدی، درخواست PATCH میفرسته تا فقط همون بخش رو آپدیت کنه و بقیه اطلاعات سر جاش بمونن.
5. DELETE
همونطور که از اسمش پیداست، این متد برای حذف کردن اطلاعات از سرور استفاده میشه.
مثال ساده:
وقتی میخوای یه پست یا یه چیزی رو از سرور پاک کنی، درخواست DELETE میفرستی.
6. HEAD
این متد شبیه GET هست، ولی فقط سرصفحهها (header) رو از سرور میگیره، بدون اینکه خود محتوا رو دریافت کنه.
مثال ساده:
اگه بخوایم فقط چک کنیم که یه صفحه وجود داره یا نه، بدون اینکه کل محتوا رو دانلود کنیم، از HEAD استفاده میکنیم.
7. OPTIONS
این متد از سرور میپرسه که چه متدهایی برای یک منبع (resource) خاص در دسترسه. یعنی میپرسه: "میتونم با این منبع چیکار کنم؟"
مثال ساده:
اگه بخوایم بفهمیم چه متدهایی (GET، POST و غیره) برای یه URL خاص پشتیبانی میشه، از OPTIONS استفاده میکنیم.
8. CONNECT
این متد برای ایجاد یه کانال ارتباطی امن (مثل HTTPS) بین کلاینت و سرور استفاده میشه.
مثال ساده:
وقتی میخوای یه اتصال امن مثل HTTPS راه بندازی، مرورگر از CONNECT استفاده میکنه.
9. TRACE
این متد برای دیباگ کردن مسیر یه درخواست بین مرورگر و سرور استفاده میشه. سرور درخواست رو همونطور که دریافت کرده، برمیگردونه.
مثال ساده:
اگه بخوایم بررسی کنیم که یه درخواست دقیقاً چه مسیری رو طی کرده تا به سرور برسه، از TRACE استفاده میکنیم.
#Methods
HTTP STATUS CODES
دستهبندی اصلیStatus Codes:
1XX =>اطلاعات غیر قابل تاثیر در پردازش
2XX => موفقیت در درخواست
3XX => Redirect
4XX => Client Side Error
5XX => Server Side Error
وضعیتهای رایج و مهم:
1. 200 OK - همهچی عالیه
این یعنی درخواستت درست بوده و سرور جواب رو داده. اگه دنبال یه صفحه یا منبع خاص بودی و 200 گرفتی، یعنی همهچی درسته و صفحه موجوده.
مثال ساده:
وقتی یه صفحه از وبسایت رو میخوای ببینی، با GET درخواست میدی که اون صفحه رو برات بیاره. یا مثلاً وقتی میخوای توی یه فرم جستجو کنی، میتونی با GET پارامترهای جستجو رو توی URL بفرستی:
example.com/search?query=something
2. 201 Created - ساخته شد
وقتی یه درخواست POST میفرستی و 201 میگیری، یعنی چیزی توی سرور ساخته شده (مثلاً یه کاربر جدید یا یه فایل آپلود شده).
مثال ساده:
وقتی یه فرم ثبتنام رو پر میکنی و میخوای اطلاعاتت رو بفرستی، POST استفاده میشه و اگر 201 بگیری، یعنی ثبتنامت موفقیتآمیز بوده.
3. 204 No Content - هیچ محتوایی نیست
یعنی درخواستت درست بوده، ولی سرور هیچ محتوایی برای برگردوندن نداره. این وضعیت زمانی میاد که مثلاً یه چیزی رو حذف کردی یا تغییری ایجاد کردی که نیاز نیست سرور جوابی برگردونه.
مثال ساده:
وقتی تست حذف یا تغییر داده انجام میدی و 204 گرفتی، یعنی عملیات موفق بوده.
4. 301 Moved Permanently - تغییر مسیر دائمی
سرور میگه که صفحهای که دنبالش بودی، به یه URL دیگه منتقل شده. اگه دوباره هم این درخواست رو بفرستی، مرورگر به URL جدید هدایتت میکنه.
مثال ساده:
وقتی آدرس یه صفحه تغییر کرده و 301 میگیری، مرورگر به طور خودکار به آدرس جدید هدایت میشه.
5. 302 Found - تغییر مسیر موقتی
شبیه 301، ولی این یکی موقتیه. یعنی سرور میگه الان باید بری به یه URL دیگه، ولی ممکنه در آینده این URL دوباره کار کنه.
مثال ساده:
وقتی صفحهای موقتی جابجا شده و 302 میگیری، باید به URL جدید بری، اما این تغییر ممکنه دائم نباشه.
.
مثال ساده:
وقتی URL یا پارامترهای درخواستت اشتباه هستن و 400 میگیری، یعنی باید درخواستت رو اصلاح کنی.
7. 401 Unauthorized - احراز هویت نشد
سرور میگه که برای دسترسی به این منبع باید احراز هویت بشی. یعنی بدون ورود به سیستم (login) نمیتونی از این صفحه یا منبع استفاده کنی.
مثال ساده:
وقتی نیاز به ورود به حساب کاربری داری و 401 میگیری، یعنی باید نام کاربری و رمز عبور صحیح وارد کنی.
8. 403 Forbidden - دسترسی ممنوعه
این یعنی حتی اگه احراز هویت کرده باشی، اجازه دسترسی به این منبع یا صفحه رو نداری. سرور دسترسی رو به دلایلی رد کرده.
مثال ساده:
وقتی حتی با وارد کردن اطلاعات درست هم نمیتونی به صفحهای دسترسی پیدا کنی و 403 میگیری، یعنی دسترسی به اون منبع ممنوع شده.
9. 404 Not Found - پیدا نشد
یعنی صفحه یا فایلی که دنبالش هستی توی سرور نیست. شاید URL اشتباهه یا منبع حذف شده.
مثال ساده:
وقتی صفحهای که به دنبال اون بودی وجود نداره و 404 میگیری، یعنی یا URL اشتباهه یا صفحه حذف شده.
10. 405 Method Not Allowed - متد مجاز نیست
یعنی متدی که استفاده کردی (مثل POST، GET، DELETE) برای این منبع مجاز نیست.
مثال ساده:
وقتی درخواست DELETE برای منبعی که فقط GET پشتیبانی میکنه میفرستی و 405 میگیری، یعنی این متد برای این منبع مناسب نیست.
11. 500 Internal Server Error - خطای داخلی سرور
یعنی سرور یه مشکل داخلی داره و نمیتونه درخواستت رو انجام بده. معمولاً وقتی کد سرور خراب باشه یا مشکلی در پردازش درخواست پیش بیاد، این کد برمیگرده.
مثال ساده:
وقتی درخواستت بهدرستی پردازش نمیشه و 500 میگیری، یعنی یه مشکل داخلی در سرور وجود داره.
12. 502 Bad Gateway - درگاه نامناسب
یعنی سرور یه پاسخ نامناسب از یه سرور دیگه (که مثل یه واسطه عمل میکنه) دریافت کرده.
مثال ساده:
وقتی چندین سرور درگیر هستن و یکی از این سرورها به درستی کار نمیکنه و 502 میگیری، یعنی مشکلی در ارتباط بین سرورها وجود داره.
13. 503 Service Unavailable - سرویس در دسترس نیست
یعنی سرور بهخاطر شلوغی یا مشکلات دیگه نمیتونه درخواستت رو انجام بده. شاید هم سرور داره آپدیت میشه یا موقتاً خاموشه.
مثال ساده:
وقتی سرور به دلایل مختلف نمیتونه درخواستت رو انجام بده و 503 میگیری، یعنی ممکنه سرور موقتاً در دسترس نباشه یا تحت فشار باشه.
نکات مهم:
کدهای 4xx رو برای پیدا کردن نقاط ضعف دسترسی (authorization) و ورودیهای اشتباه تست کن.
کدهای 5xx میتونن سرنخهای خوبی از مشکلات داخلی سرور و احتمالاً آسیبپذیریها بدن.
ریدایرکتها (3xx) رو بررسی کن تا مطمئن شی که درست هدایت میشی یا ببینی آیا میتونی اونها رو دور بزنی.
#status_codes
دستهبندی اصلیStatus Codes:
1XX =>اطلاعات غیر قابل تاثیر در پردازش
2XX => موفقیت در درخواست
3XX => Redirect
4XX => Client Side Error
5XX => Server Side Error
وضعیتهای رایج و مهم:
1. 200 OK - همهچی عالیه
این یعنی درخواستت درست بوده و سرور جواب رو داده. اگه دنبال یه صفحه یا منبع خاص بودی و 200 گرفتی، یعنی همهچی درسته و صفحه موجوده.
مثال ساده:
وقتی یه صفحه از وبسایت رو میخوای ببینی، با GET درخواست میدی که اون صفحه رو برات بیاره. یا مثلاً وقتی میخوای توی یه فرم جستجو کنی، میتونی با GET پارامترهای جستجو رو توی URL بفرستی:
example.com/search?query=something
2. 201 Created - ساخته شد
وقتی یه درخواست POST میفرستی و 201 میگیری، یعنی چیزی توی سرور ساخته شده (مثلاً یه کاربر جدید یا یه فایل آپلود شده).
مثال ساده:
وقتی یه فرم ثبتنام رو پر میکنی و میخوای اطلاعاتت رو بفرستی، POST استفاده میشه و اگر 201 بگیری، یعنی ثبتنامت موفقیتآمیز بوده.
3. 204 No Content - هیچ محتوایی نیست
یعنی درخواستت درست بوده، ولی سرور هیچ محتوایی برای برگردوندن نداره. این وضعیت زمانی میاد که مثلاً یه چیزی رو حذف کردی یا تغییری ایجاد کردی که نیاز نیست سرور جوابی برگردونه.
مثال ساده:
وقتی تست حذف یا تغییر داده انجام میدی و 204 گرفتی، یعنی عملیات موفق بوده.
4. 301 Moved Permanently - تغییر مسیر دائمی
سرور میگه که صفحهای که دنبالش بودی، به یه URL دیگه منتقل شده. اگه دوباره هم این درخواست رو بفرستی، مرورگر به URL جدید هدایتت میکنه.
مثال ساده:
وقتی آدرس یه صفحه تغییر کرده و 301 میگیری، مرورگر به طور خودکار به آدرس جدید هدایت میشه.
5. 302 Found - تغییر مسیر موقتی
شبیه 301، ولی این یکی موقتیه. یعنی سرور میگه الان باید بری به یه URL دیگه، ولی ممکنه در آینده این URL دوباره کار کنه.
مثال ساده:
وقتی صفحهای موقتی جابجا شده و 302 میگیری، باید به URL جدید بری، اما این تغییر ممکنه دائم نباشه.
.
مثال ساده:
وقتی URL یا پارامترهای درخواستت اشتباه هستن و 400 میگیری، یعنی باید درخواستت رو اصلاح کنی.
7. 401 Unauthorized - احراز هویت نشد
سرور میگه که برای دسترسی به این منبع باید احراز هویت بشی. یعنی بدون ورود به سیستم (login) نمیتونی از این صفحه یا منبع استفاده کنی.
مثال ساده:
وقتی نیاز به ورود به حساب کاربری داری و 401 میگیری، یعنی باید نام کاربری و رمز عبور صحیح وارد کنی.
8. 403 Forbidden - دسترسی ممنوعه
این یعنی حتی اگه احراز هویت کرده باشی، اجازه دسترسی به این منبع یا صفحه رو نداری. سرور دسترسی رو به دلایلی رد کرده.
مثال ساده:
وقتی حتی با وارد کردن اطلاعات درست هم نمیتونی به صفحهای دسترسی پیدا کنی و 403 میگیری، یعنی دسترسی به اون منبع ممنوع شده.
9. 404 Not Found - پیدا نشد
یعنی صفحه یا فایلی که دنبالش هستی توی سرور نیست. شاید URL اشتباهه یا منبع حذف شده.
مثال ساده:
وقتی صفحهای که به دنبال اون بودی وجود نداره و 404 میگیری، یعنی یا URL اشتباهه یا صفحه حذف شده.
10. 405 Method Not Allowed - متد مجاز نیست
یعنی متدی که استفاده کردی (مثل POST، GET، DELETE) برای این منبع مجاز نیست.
مثال ساده:
وقتی درخواست DELETE برای منبعی که فقط GET پشتیبانی میکنه میفرستی و 405 میگیری، یعنی این متد برای این منبع مناسب نیست.
11. 500 Internal Server Error - خطای داخلی سرور
یعنی سرور یه مشکل داخلی داره و نمیتونه درخواستت رو انجام بده. معمولاً وقتی کد سرور خراب باشه یا مشکلی در پردازش درخواست پیش بیاد، این کد برمیگرده.
مثال ساده:
وقتی درخواستت بهدرستی پردازش نمیشه و 500 میگیری، یعنی یه مشکل داخلی در سرور وجود داره.
12. 502 Bad Gateway - درگاه نامناسب
یعنی سرور یه پاسخ نامناسب از یه سرور دیگه (که مثل یه واسطه عمل میکنه) دریافت کرده.
مثال ساده:
وقتی چندین سرور درگیر هستن و یکی از این سرورها به درستی کار نمیکنه و 502 میگیری، یعنی مشکلی در ارتباط بین سرورها وجود داره.
13. 503 Service Unavailable - سرویس در دسترس نیست
یعنی سرور بهخاطر شلوغی یا مشکلات دیگه نمیتونه درخواستت رو انجام بده. شاید هم سرور داره آپدیت میشه یا موقتاً خاموشه.
مثال ساده:
وقتی سرور به دلایل مختلف نمیتونه درخواستت رو انجام بده و 503 میگیری، یعنی ممکنه سرور موقتاً در دسترس نباشه یا تحت فشار باشه.
نکات مهم:
کدهای 4xx رو برای پیدا کردن نقاط ضعف دسترسی (authorization) و ورودیهای اشتباه تست کن.
کدهای 5xx میتونن سرنخهای خوبی از مشکلات داخلی سرور و احتمالاً آسیبپذیریها بدن.
ریدایرکتها (3xx) رو بررسی کن تا مطمئن شی که درست هدایت میشی یا ببینی آیا میتونی اونها رو دور بزنی.
#status_codes
SOP (Same Origin Policy)
⁉️حالا Origin چیه؟
در واقع Origin ترکیبی از سه بخش اصلی هستش:
protocol
port
host
پروتکل (مثل http یا https)
دامنه (مثل example.com)
پورت (مثل 80 یا 443)
مثالهای ساده:
Same Origin:
https://example.com:443/index.php
https://example.com/dashboard
این دو URL Same Origin هستند زیرا پروتکل، دامنه و پورت یکی است.
Cross Origin به خاطر دامنه متفاوت:
https://target.com/index.php
https://example.com/home
این دو URL Cross Origin هستند چون دامنهها متفاوت است.
Cross Origin به خاطر پروتکل متفاوت:
http://example.com/home
https://example.com/home
این دو URL Cross Origin هستند چون پروتکلها (http و https) متفاوت است.
Cross Origin به خاطر پورت متفاوت:
http://example.com:8080
http://example.com
این دو Cross Origin هستند چون پورتها متفاوت است.
Cross Origin به خاطر دامنه متفاوت:
https://www.example.com/home/index.php
https://example.com/dashboard
این دو URL Cross Origin هستند چون دامنهها متفاوت است.
#SOP@Now_Republic_of_Humanity
یک قاعده امنیتی در مرورگرها هستش که به این ترتیب عمل میکنه: اگر Origin یا منبع A بخواد به Origin یا منبع B درخواست ارسال کنه، مرورگر تنها میتونه دادههای Origin یا منبع B را دریافت کنه، اما اجازه نمیده که این دادهها رندر گرفته یا نمایش داده بشن. این قاعده برای جلوگیری از مشکلات امنیتی مثل دسترسی غیرمجاز به دادههای دیگر Originها طراحی شده است. که به اصلاح بهش میگن Cross-Origin
⁉️حالا Origin چیه؟
در واقع Origin ترکیبی از سه بخش اصلی هستش:
protocol
port
host
پروتکل (مثل http یا https)
دامنه (مثل example.com)
پورت (مثل 80 یا 443)
مثالهای ساده:
Same Origin:
https://example.com:443/index.php
https://example.com/dashboard
این دو URL Same Origin هستند زیرا پروتکل، دامنه و پورت یکی است.
Cross Origin به خاطر دامنه متفاوت:
https://target.com/index.php
https://example.com/home
این دو URL Cross Origin هستند چون دامنهها متفاوت است.
Cross Origin به خاطر پروتکل متفاوت:
http://example.com/home
https://example.com/home
این دو URL Cross Origin هستند چون پروتکلها (http و https) متفاوت است.
Cross Origin به خاطر پورت متفاوت:
http://example.com:8080
http://example.com
این دو Cross Origin هستند چون پورتها متفاوت است.
Cross Origin به خاطر دامنه متفاوت:
https://www.example.com/home/index.php
https://example.com/dashboard
این دو URL Cross Origin هستند چون دامنهها متفاوت است.
⁉️چطور SOP عمل میکند؟
فرض کن هکر دو تب باز کرده است:
یکی به سایت hacker.com مربوط میشود.
دیگری به سایت bank.com مربوط میشود.
اگر SOP وجود نداشت، هکر میتوانست از hacker.com درخواستهایی به bank.com ارسال کند و اطلاعات حساس کاربر را بخواند. اما SOP مانع این کار میشود. یعنی درخواست از hacker.com به bank.com ارسال میشود، اما مرورگر دادههای برگشتی از bank.com را به hacker.com نمیدهد.
⚠️محدودیتهای SOP:
عکس: SOP روی تصاویر و عکس ها اعمال نمیشه. میشه از هر سایتی تصویری را بارگیری کرد و در سایت خود نمایش داد.💡نکته مهم: SOP فقط برای درخواستهای HTTP و HTTPS کار میکند. اگر سایت از پروتکلهای دیگر مانند WebSocket استفاده کند، SOP به آن اعمال نمیشود.
فایلهای جاوااسکریپت: SOP روی فایلهای جاوااسکریپت نیز اعمال نمیشود. بنابراین، فایلهای جاوااسکریپت موجود در یک سایت میتوانند توسط دیگر سایتها خوانده شوند که ممکن است به آسیبپذیریهای امنیتی منجر شود.
#SOP@Now_Republic_of_Humanity
Web Structure
فایلهای استاتیک (Static Files)
فایلهای استاتیک همون فایلهای سادهای هستن که توی سرور ذخیره میشن و وقتی کاربر (کلاینت) درخواستشون رو از سرور میکنه، سرور بدون هیچ تغییری اونها رو مستقیم به کاربر میفرسته. مثلا وقتی کاربر میخواد یه فایل index.html رو باز کنه، سرور همون فایل رو همونطور که هست به مرورگر کاربر ارسال میکنه. فایلهایی مثل .html، .css، .js، یا تصاویر .png و .jpg جزو فایلهای استاتیک حساب میشن.
این فایلها رو سرور اجرا نمیکنه، بلکه مرورگر کاربر اونا رو دریافت میکنه و خودش اجراشون میکنه. به خاطر همین بهشون "استاتیک" یا "ثابت" میگن، چون سرور هیچ تغییری توی محتوای این فایلها نمیده.
فایلهای داینامیک (Dynamic Files)
فایلهای داینامیک با فایلهای استاتیک فرق دارن. وقتی یه کاربر درخواست یه فایل داینامیک مثل index.php رو از سرور میکنه، سرور اول اون فایل رو مستقیماً برای کاربر نمیفرسته. در عوض، سرور اون فایل رو به یه برنامه (مثل مفسر PHP) میفرسته تا پردازش بشه و نتیجهای که از اجرای اون فایل به دست میاد برای کاربر فرستاده میشه.
این یعنی محتواشون همیشه ثابت نیست و بسته به درخواست کاربر میتونه تغییر کنه. به همین دلیل به این نوع فایلها "داینامیک" یا "پویا" میگن، چون توی سرور قبل از فرستادن برای کاربر پردازش میشن.
#web_structure
فایلهای استاتیک (Static Files)
فایلهای استاتیک همون فایلهای سادهای هستن که توی سرور ذخیره میشن و وقتی کاربر (کلاینت) درخواستشون رو از سرور میکنه، سرور بدون هیچ تغییری اونها رو مستقیم به کاربر میفرسته. مثلا وقتی کاربر میخواد یه فایل index.html رو باز کنه، سرور همون فایل رو همونطور که هست به مرورگر کاربر ارسال میکنه. فایلهایی مثل .html، .css، .js، یا تصاویر .png و .jpg جزو فایلهای استاتیک حساب میشن.
این فایلها رو سرور اجرا نمیکنه، بلکه مرورگر کاربر اونا رو دریافت میکنه و خودش اجراشون میکنه. به خاطر همین بهشون "استاتیک" یا "ثابت" میگن، چون سرور هیچ تغییری توی محتوای این فایلها نمیده.
فایلهای داینامیک (Dynamic Files)
فایلهای داینامیک با فایلهای استاتیک فرق دارن. وقتی یه کاربر درخواست یه فایل داینامیک مثل index.php رو از سرور میکنه، سرور اول اون فایل رو مستقیماً برای کاربر نمیفرسته. در عوض، سرور اون فایل رو به یه برنامه (مثل مفسر PHP) میفرسته تا پردازش بشه و نتیجهای که از اجرای اون فایل به دست میاد برای کاربر فرستاده میشه.
این یعنی محتواشون همیشه ثابت نیست و بسته به درخواست کاربر میتونه تغییر کنه. به همین دلیل به این نوع فایلها "داینامیک" یا "پویا" میگن، چون توی سرور قبل از فرستادن برای کاربر پردازش میشن.
#web_structure
📓 Ansible: The Magic of Automation-Introduction & Installation
📌 به سادگی یاد بگیرید چطور میتوانید پیکربندی های پیچیده شبکه و سیستم عامل را اتوماتیک کنید و بر روی پروژههای بزرگتر تمرکز کنید. این فرصتی است که نباید از دست بدهید!
📌 Simply learn how to automate complex network and operating system configurations and focus on larger projects. This is an opportunity you should not miss!
🔗 https://medium.com/@abolfazl.vaziri/ansible-the-magic-of-automation-introduction-installation-2f51128b4fe7
📌 به سادگی یاد بگیرید چطور میتوانید پیکربندی های پیچیده شبکه و سیستم عامل را اتوماتیک کنید و بر روی پروژههای بزرگتر تمرکز کنید. این فرصتی است که نباید از دست بدهید!
📌 Simply learn how to automate complex network and operating system configurations and focus on larger projects. This is an opportunity you should not miss!
🔗 https://medium.com/@abolfazl.vaziri/ansible-the-magic-of-automation-introduction-installation-2f51128b4fe7
Medium
Ansible: The Magic of Automation-Introduction & Installation
Imagine a world where managing complex Network&OS configurations is as simple as writing a few lines of code. Ansible is a game-changer in…