Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Variáveis ​​de hash ou criptografia a serem enviadas em um URL


A saída da maioria das rotinas de criptografia (ou hash, etc.) são dados binários arbitrários, que não podem ser incluídos com segurança em um URL sem codificá-lo.

Como notas eggyal , simplesmente usando urlencode() sobre os dados deve ser suficiente. No entanto, a codificação de URL padrão pode não ser a maneira mais compacta de codificar dados binários aleatórios. Base64 A codificação seria mais eficiente, mas infelizmente não é totalmente segura para URL devido ao uso do + personagem.

Felizmente, existe uma variante padronizada segura para URL da codificação base64, especificada em RFC 4648 como "base64url". Aqui está um par de funções para codificar e decodificar dados usando essa codificação em PHP, com base nesta resposta 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, '-_', '+/'));
}

(Simplifiquei um pouco a função de decodificação, já que pelo menos as versões atuais do PHP aparentemente não requerem = caracteres de preenchimento na entrada para base64_decode() .)

Ps. Para gerar com segurança os tokens aleatórios em primeiro lugar, consulte, por exemplo, esta pergunta .