
JSON Web Token یا JWT یکی از رایجترین روشهای احراز هویت در معماریهای مدرن وب و موبایل است؛ اما اگر بهدرستی پیادهسازی نشود، میتواند به یکی از بزرگترین نقاط ضعف امنیتی سیستم تبدیل شود. این مقاله در سال ۲۰۲۵، با نگاهی عمیق و بهروز به تهدیدات رایج JWT مانند سرقت توکن، Replay Attack، ضعف در امضا، نگهداری نامناسب در کلاینت، و نشت اطلاعات میپردازد. سپس بهترین روشهای دفاعی از جمله استفاده از Refresh Token Rotation، اعتبار کوتاهمدت توکن، ذخیره امن در HttpOnly Cookie، محدود کردن سطح دسترسی، امضای قدرتمند (HS512/RS256)، استفاده از JTI برای جلوگیری از تکرار و مانیتورینگ رفتار کاربران را بررسی میکند. در نهایت، با ارائه چکلیست عملی برای برنامهنویسان، یک مسیر کامل از تشخیص تهدید تا پیادهسازی معماری احراز هویت ایمن ارائه میشود.
JSON Web Token یا JWT به یکی از رایجترین روشهای احراز هویت و کنترل دسترسی در معماریهای مدرن مانند Microservices، SPA، Mobile Apps و APIها تبدیل شده است. اما با گسترش حملات سایبری، امنیت JWT نیز به یک چالش حیاتی بدل شده است. در این مقاله بهصورت تخصصی تهدیدها، اشتباهات رایج و بهترین استانداردهای امنیتی سال ۲۰۲۵ را بررسی میکنیم.
JWT یک توکن رمزگذاریشده است که اطلاعات احراز هویت یا مجوز دسترسی را در قالب یک Token بدون حالت (Stateless) در اختیار کلاینت قرار میدهد. این توکن روی سرور ذخیره نمیشود و همین موضوع باعث شده در سیستمهای بزرگ بسیار محبوب شود.
اگر یک توکن JWT بهدست هکر بیفتد، او میتواند تا زمانی که توکن معتبر است بهعنوان کاربر وارد سیستم شود. این خطر در معماریهای بدونحالت (Stateless) بسیار جدیتر است.
متداولترین حمله علیه JWT، سرقت توکن از مرورگر، حافظه کلاینت یا شبکه است. هکر پس از سرقت توکن میتواند وارد پنل کاربر شود.
نگهداری JWT در LocalStorage بسیار خطرناک است زیرا در برابر حملات XSS آسیبپذیر است.
استفاده از الگوریتمهای قدیمی مانند HS256 یا حتی اجازه دادن به مقدار none
میتواند کل سیستم را سقوط دهد.
در این حمله، هکر توکن را دوباره استفاده میکند حتی اگر از کاربر اصلی باشد. بدون استفاده از JTI یا سیستم اعتبارسنجی، جلوگیری از این حمله سخت است.
اگر JWT شما چند ساعت یا چند روز اعتبار داشته باشد، در صورت سرقت، حمله بسیار راحت انجام میشود.
بهترین روش ذخیره JWT در سال ۲۰۲۵ استفاده از HttpOnly Cookie است:
در این روش، رفرش توکن بعد از هر بار استفاده باطل میشود و یک توکن جدید صادر میشود. این سیستم از حملات Replay جلوگیری میکند.
در سال ۲۰۲۵ توصیه میشود:
الگوریتمهای جدیدتر و امنتر مانند RS256 و HS512 شدیداً توصیه میشوند.
هر توکن باید یک شناسه یکتا (jti) داشته باشد تا بتوان آن را در لیست ابطال (Blacklist) ذخیره کرد.
توکن باید دقیقاً مشخص کند کاربر چه دسترسیهایی دارد: مثلاً:
{
"sub": "user123",
"role": "writer",
"scope": "create:post edit:post"
}
Access Token در هدر ارسال میشود:
Authorization: Bearer <token>
وقتی Access Token منقضی شد → درخواست Refresh Token و صدور توکن جدید.
JWT ابزاری بسیار قدرتمند است، اما اگر بدون رعایت استانداردهای امنیتی استفاده شود میتواند یک خطر بزرگ باشد. با رعایت اصول گفتهشده در این مقاله—از جمله استفاده از HttpOnly Cookie، چرخش رفرش توکن، الگوریتمهای امن، زمان اعتبار کوتاه و جلوگیری از Replay Attack—میتوانید سیستم خود را در سطح امنیتی سال ۲۰۲۵ ایمن کنید.
امنیت JWT فقط یک تنظیم نیست؛ یک معماری کامل است.
مقالاتی که ممکن است برای شما جالب باشند
OAuth 2.1 نسخه بهبودیافته و امنتر OAuth 2.0 است که با حذف جریانهای ناامن مانند Implicit Flow، اجباریکردن PKCE، حذف استفاده از Password Grant و یکپارچهسازی بهترین روشهای امنیتی، استاندارد جدیدی برای احراز هویت و مجوزدهی در وب معرفی میکند. این مقاله معماری OAuth 2.1، تفاوت آن با OAuth 2.0، نحوه پیادهسازی در وباپلیکیشنها، توصیههای امنیتی و مثالهای عملی را بهصورت کامل بررسی میکند.