sql >> Database teknologi >  >> RDS >> Mysql

Hashing eller kryptering af variabler, der skal sendes i en url

Outputtet af de fleste krypterings- (eller hashing osv.) rutiner er vilkårlige binære data, som ikke sikkert kan inkluderes i en URL uden at kode den.

Som æggelige noter , blot ved at bruge urlencode() på dataene burde være nok. Men standard URL-kodning er muligvis ikke den mest kompakte måde at kode tilfældige binære data på. Base64 kodning ville være mere effektiv, men er desværre ikke fuldstændig URL-sikker på grund af dens brug af + tegn.

Heldigvis findes der en standardiseret URL-sikker variant af base64-kodningen, specificeret i RFC 4648 som "base64url". Her er et par funktioner til kodning og afkodning af data ved hjælp af denne kodning i PHP, baseret på dette svar fra "gutzmer at usa dot net" :

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

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

(Jeg har forenklet afkodningsfunktionen en smule, da i det mindste nuværende versioner af PHP tilsyneladende ikke kræver = udfyldning af tegn i input til base64_decode() .)

Ps. For sikker generering af de tilfældige tokens i første omgang, se f.eks. dette spørgsmål .



  1. Indsæt værdier fra en tabel til en tabel

  2. Hvad er den rigtige måde at gemme disse data i et MySQL-skema?

  3. LOWER() Funktion i Oracle

  4. Generer tabelrelationsdiagram fra eksisterende skema (SQL-server)