> base64url | jwt | url-säker <
// Base64url - Base64-variant utan padding som är säker för webbadresser och filnamn
URL-kompatibel
Inga speciella URL-tecken – säkert för query-parametrar och sökvägar.
JWT-standard
Används i JSON Web Tokens och OAuth 2.0-specifikationer.
Valfri padding
Padding-tecken (=) kan hoppas över för renare webbadresser.
>> teknisk information
Hur Base64url fungerar:
Base64url är en variant av Base64 som ersätter "+" med "-" och "/" med "_", vilket gör resultatet säkert för webbadresser och filnamn. Padding-tecknet "=" utelämnas ofta eftersom det kan skapa problem i webbadresser.
Jämförelse:
Base64: SGVsbG8+Pw== Base64url: SGVsbG8-Pw
Varför använda Base64url:
- >JWT-token
- >OAuth 2.0-flöden
- >Query-parametrar i URL
- >Kodning av filnamn
- >Webb-API-signaturer
>> vanliga frågor
Vad är Base64url?
Base64url är en variant av Base64-kodning som är säker för webbadresser och filnamn. Den ersätter "+" med "-", "/" med "_" och kan ta bort padding-tecknen "=" för att undvika problem med URL-kodning.
Varför inte använda vanlig Base64 i webbadresser?
Vanlig Base64 använder tecknen "+", "/" och "=", som har speciell betydelse i webbadresser. "+" kan tolkas som mellanslag, "/" är en sökvägsseparator och "=" används för parametrar, vilket kan skapa problem vid tolkning.
Var används Base64url?
Base64url används i stor utsträckning i JWT (JSON Web Tokens), OAuth 2.0-autentiseringskoder, SAML-assertioner och alla API:er som behöver skicka binära data i webbadresser eller HTTP-huvuden.
Är padding obligatorisk i Base64url?
Nej, padding är valfri i Base64url. Många implementationer utelämnar den eftersom längden kan beräknas. JWT-specifikationen kräver särskilt att ingen padding används för att göra webbadresserna kortare.
// Skillnader mot Base64
| Base64 | Base64url |
|---|---|
| + | - |
| / | _ |
| = | — |
// Base64url i kod
JavaScript btoa(s).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')
Node.js Buffer.from(s).toString('base64url')
Python base64.urlsafe_b64encode(b).rstrip(b'=')
Go base64.RawURLEncoding.EncodeToString(b)
Padding s + '=' * (-len(s) % 4)
>> Fler frågor
F: Varför utelämnar Base64url “=”?
S: Utfyllnaden kan härledas ur längden och “=” har särskild betydelse i URL:er och frågesträngar. Därför skriver JWT (RFC 7515) och många API:er Base64url utan utfyllnad.
F: Hur återställer jag utfyllnaden före avkodning?
S: Titta på längden modulo 4: rest 2 → lägg till ==, rest 3 → lägg till =, rest 0 → inget. Rest 1 är aldrig giltigt. Byt också - mot + och _ mot /.
F: Är Base64url kryptering?
S: Nej, det är bara en kodning – vem som helst kan vända den. Innehållet i en JWT-payload är läsbart, så lägg inga hemligheter där.