De uitvoer van de meeste versleutelingsroutines (of hashing, enz.) zijn willekeurige binaire gegevens, die niet veilig in een URL kunnen worden opgenomen zonder deze te coderen.
Als eivormige noten
, gewoon met behulp van urlencode()
op de gegevens zou voldoende moeten zijn. Standaard URL-codering is echter misschien niet de meest compacte manier om willekeurige binaire gegevens te coderen. Base64
codering zou efficiënter zijn, maar is helaas niet volledig URL-veilig vanwege het gebruik van de +
karakter.
Gelukkig bestaat er een gestandaardiseerde URL-veilige variant van de base64-codering, gespecificeerd in RFC 4648 als "base64url". Hier is een paar functies voor het coderen en decoderen van gegevens met behulp van deze codering in PHP, gebaseerd op dit antwoord van "gutzmer at usa dot net" :
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(strtr($data, '-_', '+/'));
}
(Ik heb de decoderingsfunctie een beetje vereenvoudigd, aangezien in de huidige versies van PHP blijkbaar geen =
nodig is opvultekens in de invoer naar base64_decode()
.)
Ps. Voor het veilig genereren van de willekeurige tokens in de eerste plaats, zie b.v. deze vraag .