Οδηγός
Πώς να αποκωδικοποιήσετε ένα JWT χωρίς διαρροή
Ένα JSON Web Token μεταφέρει πραγματικά δεδομένα: τον χρήστη στον οποίο εκδόθηκε, τα δικαιώματα που παραχωρεί, το πότε λήγει. Το να το επικολλήσετε σε έναν τυχαίο online αποκωδικοποιητή σημαίνει να παραδώσετε αυτά τα δεδομένα, και συχνά μια ακόμη ενεργή συνεδρία, σε έναν διακομιστή που δεν ελέγχετε. Ο αποκωδικοποιητής παρακάτω τρέχει εξ ολοκλήρου στον browser σας, ώστε να διαβάσετε τι περιέχει ένα token, να ελέγξετε αν έχει λήξει και να επιβεβαιώσετε μια υπογραφή HMAC όταν ξέρετε το μυστικό, όλα αυτά χωρίς ούτε ένα αίτημα δικτύου να φεύγει από την καρτέλα σας.
Βήμα προς βήμα
- Ανοίξτε τον αποκωδικοποιητή JWT και επικολλήστε το token σας στο πεδίο εισόδου. Ένα JWT είναι τρία τμήματα κωδικοποιημένα σε Base64Url και ενωμένα με τελείες: header, payload και υπογραφή. Μπορείτε να το επικολλήσετε με το πρόθεμα Bearer ή χωρίς αυτό. Το εργαλείο διαβάζει τη δομή και στις δύο περιπτώσεις και σας ειδοποιεί αμέσως αν η μορφή είναι λανθασμένη.
- Διαβάστε το αποκωδικοποιημένο header και payload. Το header δείχνει τον αλγόριθμο υπογραφής (για παράδειγμα HS256 ή RS256) και το αναγνωριστικό κλειδιού όταν υπάρχει. Το payload απαριθμεί τα claims: για ποιον προορίζεται το token (sub), ποιος το εξέδωσε (iss) και τις χρονικές σημάνσεις. Το εργαλείο μετατρέπει τα αριθμητικά πεδία iat, nbf και exp σε ευανάγνωστες ημερομηνίες και επισημαίνει αν το token ισχύει ακόμη ή έχει ήδη λήξει.

- Αν το token χρησιμοποιεί HS256 και κατέχετε το κοινό μυστικό, επικολλήστε το μυστικό στο πεδίο επαλήθευσης και πατήστε Επαλήθευση. Το εργαλείο υπολογίζει ξανά το HMAC πάνω στο header και το payload και το συγκρίνει με την υπογραφή, ώστε να μάθετε αν το token είναι γνήσιο ή αλλοιώθηκε. Για token RS256 ή ES256, η υπογραφή γίνεται με ιδιωτικό κλειδί που δεν έχετε, οπότε το εργαλείο εξετάζει τα claims αλλά δεν ισχυρίζεται ότι επαληθεύει την υπογραφή.

Γιατί δεν πρέπει ποτέ να επικολλάτε token σε τυχαίο site
Ένα JWT δεν είναι κρυπτογραφημένο. Το header και το payload είναι μόνο κωδικοποιημένα σε Base64Url, που σημαίνει ότι όποιος λάβει το token μπορεί να διαβάσει κάθε claim μέσα του: email, αναγνωριστικό χρήστη, ρόλους, εσωτερικές σημαίες. Αν το token είναι access token που δεν έχει λήξει, όποιος το κατέχει μπορεί να το αναπαράγει και να ενεργεί ως εσείς μέχρι να λήξει. Όταν επικολλάτε ένα ζωντανό token σε έναν φιλοξενούμενο αποκωδικοποιητή, στέλνετε όλα αυτά στα logs εκείνου του διακομιστή. Η αποκωδικοποίηση του token στο δικό σας μηχάνημα, χωρίς μεταφόρτωση, είναι ο μόνος τρόπος να το εξετάσετε χωρίς να διευρύνετε τον κύκλο όσων μπορούν να το δουν. Μπορείτε να επιβεβαιώσετε ότι δεν υπάρχει κίνηση ανοίγοντας το panel δικτύου ενώ αποκωδικοποιείτε.
Τι μπορεί και τι δεν μπορεί να σας πει η υπογραφή
Η υπογραφή είναι αυτό που εμποδίζει κάποιον να επεξεργαστεί τα claims και να μείνει ατιμώρητος. Για ένα token HS256, το ίδιο μυστικό υπογράφει και επαληθεύει, οπότε αν ξέρετε το μυστικό μπορείτε να επιβεβαιώσετε πλήρως ότι το token είναι αυθεντικό εδώ ακριβώς. Για token RS256 και ES256, ένα ιδιωτικό κλειδί υπογράφει το token και μόνο το αντίστοιχο δημόσιο κλειδί το επαληθεύει. Το ιδιωτικό κλειδί δεν φεύγει ποτέ από τον εκδότη, οπότε ένα εργαλείο από την πλευρά του πελάτη διαβάζει τα claims αλλά χωρίς το δημόσιο κλειδί δεν μπορεί τίμια να αποδείξει την υπογραφή. Αντιμετωπίστε το αποκωδικοποιημένο payload ως ισχυρισμό του εκδότη, όχι ως απόδειξη, μέχρι η υπογραφή να ελεγχθεί από όποιον κατέχει το κλειδί επαλήθευσης. Για να κάνετε hash ή να συγκρίνετε μυστικά ξεχωριστά, ο γεννήτορας hash σε αυτό το site τρέχει επίσης τοπικά.
Δομή JWT και τι αποκαλύπτει κάθε τμήμα
Ένα JWT είναι τρία τμήματα κωδικοποιημένα σε Base64url, χωρισμένα με τελείες: header, payload και signature. Το header δηλώνει τον τύπο του token („JWT”) και τον αλγόριθμο: το HS256 (HMAC-SHA-256, ένα κοινό μυστικό) ή το RS256 (RSA-SHA-256, ένα ζεύγος δημόσιου/ιδιωτικού κλειδιού) είναι τα πιο κοινά. Το payload μεταφέρει claims όπως `sub` (subject, συνήθως ένα αναγνωριστικό χρήστη), `iat` (χρονοσφραγίδα Unix έκδοσης), `exp` (χρονοσφραγίδα Unix λήξης), `aud` (το κοινό για το οποίο προορίζεται) και προσαρμοσμένα claims εφαρμογής όπως ρόλοι ή scopes. Το Base64url δεν είναι κρυπτογράφηση: είναι μια παραλλαγή του Base64 ασφαλής για URL που αντικαθιστά το `+` με `-` και το `/` με `_` και παραλείπει το padding. Όποιος κατέχει την ακατέργαστη συμβολοσειρά του token μπορεί να αποκωδικοποιήσει το header και το payload χωρίς το κλειδί υπογραφής. Μόνο το τμήμα signature απαιτεί το κλειδί για επαλήθευση. Γι' αυτό η επικόλληση ενός ζωντανού token παραγωγής σε έναν εξωτερικό online αποκωδικοποιητή είναι κίνδυνος ασφαλείας: αν το `exp` του token είναι ακόμη στο μέλλον και η υπηρεσία καταγράφει την είσοδο, η συνεδρία που αντιπροσωπεύει μπορεί να εκτεθεί.
Τα εργαλεία που χρησιμοποιούνται σε αυτόν τον οδηγό
- Αποκωδικοποιητής JWTΑποκωδικοποιήστε ένα JWT (κεφαλίδα, περιεχόμενο, λήξη) χωρίς αποστολή πουθενά. Χωρίς επαλήθευση υπογραφής.
- Γεννήτρια κατακερματισμούΔημιουργήστε κατακερματισμούς MD5, SHA-1, SHA-256, SHA-512 από κείμενο ή αρχεία. Χωρίς αποστολή.
- Μορφοποιητής JSONΜορφοποιήστε, επικυρώστε και ελαχιστοποιήστε JSON απευθείας στον περιηγητή σας. Χωρίς αποστολή.
Συχνές ερωτήσεις
Στέλνεται το token μου σε κάποιον διακομιστή όταν το αποκωδικοποιώ;
Όχι. Ο αποκωδικοποιητής διαχωρίζει το token, αποκωδικοποιεί το header και το payload από Base64Url και τα εμφανίζει στη μνήμη. Ο προαιρετικός έλεγχος HMAC χρησιμοποιεί το ενσωματωμένο Web Crypto API του browser σας. Τίποτα δεν ταξιδεύει μέσω δικτύου, κάτι που έχει σημασία επειδή ένα JWT συχνά περιέχει προσωπικά δεδομένα και μια συνεδρία που είναι ακόμη ζωντανή. Ανοίξτε το panel δικτύου του browser ενώ αποκωδικοποιείτε και δεν θα δείτε κανένα αίτημα να βγαίνει.
Μπορεί αυτό το εργαλείο να επαληθεύσει υπογραφή RS256 ή ES256;
Όχι πλήρως, και δεν θα προσποιηθεί ότι μπορεί. Το HS256 χρησιμοποιεί ένα κοινό μυστικό τόσο για υπογραφή όσο και για επαλήθευση, οπότε η επικόλληση αυτού του μυστικού επιτρέπει στο εργαλείο να επιβεβαιώσει την υπογραφή στον browser σας. Τα RS256 και ES256 χρησιμοποιούν ιδιωτικό κλειδί για υπογραφή και ξεχωριστό δημόσιο κλειδί για επαλήθευση. Το εργαλείο διαβάζει και επικυρώνει τα claims και τη λήξη αλλά δεν φτάνει να ισχυριστεί μια υπογραφή που δεν μπορεί να ελέγξει. Για αυτά τα token, επαληθεύστε στην υπηρεσία που κατέχει το δημόσιο κλειδί.