sql >> Databasteknik >  >> RDS >> Mysql

Hashing eller kryptering av variabler som ska skickas i en url

Utdata från de flesta krypteringsrutiner (eller hashning, etc.) är godtyckliga binära data, som inte kan inkluderas säkert i en URL utan att koda den.

Som äggliga anteckningar , helt enkelt med urlencode() på uppgifterna borde räcka. Men standard URL-kodning kanske inte är det mest kompakta sättet att koda slumpmässig binär data. Base64 kodning skulle vara effektivare, men är tyvärr inte helt URL-säker på grund av dess användning av + tecken.

Lyckligtvis finns det en standardiserad URL-säker variant av base64-kodningen, specificerad i RFC 4648 som "base64url". Här är ett par funktioner för att koda och avkoda data med denna kodning i PHP, baserat på detta svar av "gutzmer at usa dot net" :

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

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

(Jag har förenklat avkodningsfunktionen lite, eftersom åtminstone nuvarande versioner av PHP tydligen inte kräver = utfyllnad av tecken i inmatningen till base64_decode() .)

Ps. För säker generering av slumpmässiga tokens i första hand, se t.ex. denna fråga .



  1. Förhindra rekursiv trigger i PostgreSQL

  2. ld:biblioteket hittades inte för -lzstd vid paketinstallation för mysql2 gem Ruby på macOS Big Sur 11.4

  3. Hur laddar din Oracle ODBC-drivrutin Oracle-klienten?

  4. Infoga värden från en tabell till en tabell