Mysql
 sql >> Base de données >  >> RDS >> Mysql

Variables de hachage ou de chiffrement à envoyer dans une url

La sortie de la plupart des routines de chiffrement (ou de hachage, etc.) est constituée de données binaires arbitraires, qui ne peuvent pas être incluses en toute sécurité dans une URL sans l'encoder.

Comme des notes d'œufs , en utilisant simplement urlencode() sur les données devrait suffire. Cependant, l'encodage d'URL standard n'est peut-être pas le moyen le plus compact d'encoder des données binaires aléatoires. Base64 l'encodage serait plus efficace, mais n'est malheureusement pas complètement sûr pour les URL en raison de son utilisation du + caractère.

Heureusement, il existe une variante normalisée URL-safe du codage base64, spécifiée dans RFC 4648 comme "base64url". Voici une paire de fonctions pour encoder et décoder des données en utilisant cet encodage en PHP, basé sur cette réponse de "gutzmer at usa dot net" :

function base64url_encode($data) {
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}

function base64url_decode($data) {
    return base64_decode(strtr($data, '-_', '+/'));
}

(J'ai un peu simplifié la fonction de décodage, car au moins les versions actuelles de PHP ne nécessitent apparemment pas = remplissage de caractères dans l'entrée de base64_decode() .)

Ps. Pour générer en toute sécurité les jetons aléatoires en premier lieu, voir par ex. cette question .