JWT Security1 دقیقه مطالعه
نکات امنیتی JWT چیست؟
قواعدی که هنگام استفاده از JSON Web Token برای احراز هویت باید رعایت شوند تا توکن قابل جعل یا سرقتشده بیخطر بماند.
چرا مهم است؟
JWT بهتنهایی امن نیست — پیادهسازی نادرست آن (الگوریتم اشتباه، عمر طولانی، عدم Revoke) یکی از رایجترین منابع آسیبپذیری در APIهای مدرن است.
قواعد کلیدی
- همیشه امضا را روی سرور بررسی کنید: هیچوقت به Payload توکن بدون Verify کردن Signature اعتماد نکنید.
- الگوریتم را صریح مشخص کنید: اجازه ندهید سرور الگوریتم را از خود توکن بخواند (حمله معروف "alg: none").
- عمر کوتاه برای Access Token: معمولاً ۱۵-۳۰ دقیقه، همراه با Refresh Token برای تمدید.
مثال (داتنت — تنظیم صحیح اعتبارسنجی)
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key)
};
});
اشتباه رایج
❌ ذخیره JWT در localStorage مرورگر برای برنامههای حساس — در معرض حمله XSS است؛ برای Session مرورگری، httpOnly Cookie گزینه امنتری است.
منبع و مطالعه بیشتر
خلاصه
امنیت JWT یعنی همیشه Signature را روی سرور Verify کنید، الگوریتم را صریح مشخص کنید و عمر Access Token را کوتاه نگه دارید. برای وب، httpOnly Cookie از localStorage امنتر است. مرجع کامل: RFC 8725 (JWT Best Current Practices).
این مطلب مفید بود؟
☆نشان کردن