احراز هویت مدرن در وب؛ Session، JWT و Refresh Token
فهرست مطالب~۱۵۱ واژه۱/۶ — ۱۷٪
بسیاری از سایتها باید بدانند کاربر چه کسی است و چه اجازههایی دارد.
۱. Authentication و Authorization
Authentication یعنی تشخیص هویت کاربر.
Authorization یعنی بررسی اینکه کاربر چه اجازهای دارد.
۲. Session چیست؟
در مدل Session، سرور اطلاعات نشست کاربر را مدیریت میکند و مرورگر معمولاً یک شناسه نشست دریافت میکند.
۳. JWT چیست؟
JWT قالبی برای انتقال اطلاعات قابل اعتبارسنجی است. محتوای معمول JWT رمزنگاریشده و محرمانه نیست و امضای آن برای تشخیص تغییر غیرمجاز استفاده میشود.
پس نباید اطلاعات حساس را داخل JWT قرار داد.
۴. Refresh Token
در برخی معماریها، Access Token کوتاهعمر است و Refresh Token برای دریافت Access Token جدید استفاده میشود.
۵. نکات امنیتی
- رمز عبور را با Hash امن ذخیره کنید.
- برای نشستها انقضا در نظر بگیرید.
- مجوزها را در Backend بررسی کنید.
- Tokenها را از دسترسی JavaScript غیرقابل اعتماد محافظت کنید.
- در برابر CSRF و سرقت نشست تدابیر مناسب اتخاذ کنید.
جمعبندی
Session و JWT ابزارهایی برای طراحی احراز هویت هستند، نه راهحل جادویی امنیت.
نوشتههای مرتبط
امنیت وب را نباید بعد از ساخت سایت شروع کرد
امنیت یک Feature نیست؛ یک Property برای کل سیستم است. چرا باید از طراحی سیستم وارد پروژه شود، نه بعد از ساخت سایت.
امنیت فرانتاند؛ چه اطلاعاتی را نباید هرگز به مرورگر بسپاریم؟
مرورگر مرز اعتماد نیست؛ چرا Secretها، تصمیمهای امنیتی و اعتبارسنجی هرگز نباید فقط به فرانتاند سپرده شوند و XSS چگونه شکل میگیرد.