در حال بارگذاری...
تست عمیق مکانیزمهای احراز هویت و مجوز در API شامل OAuth 2.0، JWT، API Key و session-based authentication. (محتوای آموزشی تکمیلی — خارج از WSTG v4.2 رسمی)
اهداف این درس
| مکانیزم | مزیت | معایب | کاربرد |
|---|---|---|---|
| JWT | بدون state، مقیاسپذیر | لغو دشوار | APIهای مدرن |
| OAuth 2.0 | دسترسی محدود، امن | پیچیده | APIهای عمومی |
| API Key | ساده | ناامن اگر فاش شود | APIهای داخلی |
| Session | لغو آسان | نیاز به state | وب اپلیکیشنها |
JWT یک token امن است که از سه بخش تشکیل شده: header (الگوریتم و نوع)، payload (دادهها) و signature (امضا). هر بخش بهصورت Base64url رمزگذاری شده و با نقطه از هم جدا میشوند.
1eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaSJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c23header: {"alg": "HS256"}4payload: {"sub": "1234567890", "name": "Ali"}5signature: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)1# decode کردن JWT2echo 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.xxx' | cut -d'.' -f2 | base64 -d34# تست الگوریتم none5curl -H "Authorization: Bearer eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxIiwicm9sZSI6ImFkbWluIn0." \6 https://target.com/api/adminOAuth 2.0 یک چارچوب مجوز است که به کاربر اجازه میدهد بدون اشتراکگذاری رمز عبور، دسترسی محدود به منابع خود بدهد.
API Key یک رشته منحصربهفرد است که برای شناسایی و احراز هویت برنامه استفاده میشود.
هشدار
هرگز JWT را بدون بررسی signature بپذیرید. الگوریتم none باید در سرور غیرفعال باشد.
توصیه عملی
از ابزار jwt.io برای decode و بررسی JWTها استفاده کنید. همچنین از jwt_tool برای تست خودکار آسیبپذیریهای JWT استفاده کنید.
JWT نباید با الگوریتم none امضا شود.
Secret key JWT باید قوی و امن باشد.
OAuth 2.0 باید از PKCE برای جلوگیری از حمله authorization code استفاده کند.
API Key نباید در URL یا کد منبع قرار گیرد.
JWT از چند بخش تشکیل شده است؟
JWT چیست و چگونه کار میکند؟
JWT (JSON Web Token) یک token امن است که از سه بخش header، payload و signature تشکیل شده. سرور token را امضا میکند و کلاینت آن را در درخواستها ارسال میکند.
آسیبپذیری الگوریتم none در JWT چیست؟
اگر سرور الگوریتم none را بپذیرد، مهاجم میتواند بدون امضا، token معتبر بسازد و به سیستم دسترسی پیدا کند.
تفاوت OAuth 2.0 و API Key چیست؟
OAuth 2.0 یک چارچوب مجوز است که به کاربر اجازه میدهد بدون اشتراکگذاری رمز عبور، دسترسی محدود بدهد. API Key یک رشته ساده است که برای شناسایی برنامه استفاده میشود.