כלי חינמי · רץ בדפדפן שלכם
מפענח JWT
הדביקו JSON Web Token כדי לקרוא את ה־header וה־payload ולראות מתי הוא הונפק ומתי פג תוקפו.
תשובה קצרה
ל־JWT יש שלושה חלקים מופרדים בנקודות: header, payload וחתימה. שני הראשונים הם JSON בקידוד Base64URL, כך שכל אחד יכול לפענח ולקרוא אותם; רק החתימה מוכיחה שהטוקן אמיתי. הכלי מפענח את ה־header וה־payload והופך את exp, iat ו־nbf לתאריכים קריאים. הוא לא מאמת את החתימה.
איך משתמשים
- הדביקו את הטוקן. העתיקו את ה־JWT מהאפליקציה, מ־Authorization header או מ־cookie והדביקו אותו בתיבה.
- קראו את החלקים. ה־header מציג את האלגוריתם; ה־payload מציג את ה־claims, כמו מזהה המשתמש וההרשאות.
- בדקו את הזמנים. הכלי מציג מתי הטוקן הונפק ומתי יפוג, והאם כבר פג תוקפו.
דוגמה
JWT חתום למשתמש עם תפקיד admin, בתוקף לשעה:
קלט
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzQyIiwibmFtZSI6IlNhcmEgTGV2aSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc5MzUyMDAwMCwiZXhwIjoxNzkzNTIzNjAwfQ.1R3nQ-xp3SDmEZSSr355txmajhu1r1JjO863Li_Cam0פלט
Header
{
"alg": "HS256",
"typ": "JWT"
}
Payload
{
"sub": "user_42",
"name": "Sara Levi",
"role": "admin",
"iat": 1793520000,
"exp": 1793523600
}
Issued (iat): 2026-11-01T08:00:00Z
Expires (exp): 2026-11-01T09:00:00Zשגיאות נפוצות ואיך לתקן אותן
הטוקן לא מפוענח- העתיקו רק את הטוקן. הסירו את הקידומת "Bearer ", מירכאות ושבירות שורה, ובדקו שיש בו בדיוק שתי נקודות.
jwt expired (TokenExpiredError)- זמן ה־exp עבר. קבלו access token חדש בעזרת ה־refresh token; אל תאריכו סתם את תוקף הטוקנים.
invalid signature- הטוקן נחתם בסוד או במפתח אחר מזה שהשרת משתמש בו, לרוב כי לסביבות או לשרתים יש סודות שונים. השתמשו באותו מפתח בכל מקום שמאמת טוקנים.
jwt not active (NotBeforeError)- זמן ה־nbf עוד בעתיד, בדרך כלל כי השעונים של השרתים לא מסונכרנים. סנכרנו שעונים עם NTP או אפשרו סטייה של כמה שניות.
שאלות נפוצות
בטוח להדביק כאן את ה־JWT שלי?
כן. הפענוח מתבצע כולו בדפדפן ושום דבר לא נשלח לשרת. ובכל זאת, התייחסו לטוקנים מפרודקשן כמו לסיסמאות ואל תשתפו אותם.
הכלי מאמת את החתימה של ה־JWT?
לא. אימות חתימה דורש את הסוד או המפתח הציבורי, שמקומם בשרת שלכם. פענוח רק קורא את ה־header וה־payload.
למה כל אחד יכול לקרוא את ה־payload?
ה־payload רק מקודד, לא מוצפן. לעולם אל תשימו סיסמאות או סודות ב־JWT.
מה המשמעות של exp, iat ו־nbf?
exp הוא מועד התפוגה, iat הוא מועד ההנפקה ו־nbf הוא הזמן שלפניו הטוקן לא תקף. כולם חותמות זמן Unix בשניות.
למה משתמשים מתנתקים באקראי עם JWT?
בדרך כלל מרוצי refresh בין בקשות או לשוניות, הפרשי שעון, הגדרות cookie או סודות שונים בין שרתים. ראו את המאמר על תיקון באגים בסשנים של JWT.
מה ההבדל בין JWS ל־JWE?
JWS חתום אבל קריא, ורוב ה־JWT הם כאלה. JWE מוצפן, כך שאי אפשר לקרוא את ה־payload בלי המפתח. הכלי הזה מפענח רק טוקנים חתומים.
מה זה alg ב־header של JWT?
אלגוריתם החתימה, כמו HS256 (סוד משותף) או RS256 ו־ES256 (זוג מפתחות פרטי וציבורי). שרתים צריכים לקבל רק את האלגוריתמים שהם מצפים להם.
כמה זמן JWT צריך להיות תקף?
access tokens הם בדרך כלל קצרים, מדקות ועד שעה, עם refresh token ארוך יותר שמשמש לקבלת חדשים. טוקנים קצרים מגבילים את הנזק אם אחד דולף.
איפה לשמור JWT בדפדפן?
אפליקציות רבות שומרות את ה־refresh token ב־cookie מסוג httpOnly ו־Secure ואת ה־access token הקצר בזיכרון, וזה מגביל מה סקריפט זדוני יכול לקרוא.
אפשר לערוך את ה־payload ולהשתמש שוב בטוקן?
לא. שינוי של כל חלק פוסל את החתימה, ושרת שמוגדר נכון ידחה את הטוקן.
מקורות
קשור
- למה משתמשים מתנתקים באקראי, ואיך מתקנים באגים של JWT
- מקודד ומפענח Base64
- ממיר חותמות זמן Unix
- כל הכלים החינמיים
עוד כלים בקבוצה הזו
- מעצב ובודק JSON
- בודק JSON
- מעצב HTML
- מכווץ CSS
- מכווץ JavaScript
- מקודד HTML
- קידוד ופענוח URL
- מחולל UUID
- מחולל גיבוב SHA-256
- בודק ביטויים רגולריים
- ממיר צבעים