Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Haszowanie lub szyfrowanie zmiennych do wysłania w adresie URL

Wynikiem większości procedur szyfrowania (lub haszowania itp.) są dowolne dane binarne, których nie można bezpiecznie umieścić w adresie URL bez zakodowania go.

Jako jajka , po prostu używając urlencode() na danych powinno wystarczyć. Jednak standardowe kodowanie adresów URL może nie być najbardziej kompaktowym sposobem kodowania losowych danych binarnych. Base64 kodowanie byłoby bardziej wydajne, ale niestety nie jest całkowicie bezpieczne dla adresów URL ze względu na użycie + znak.

Na szczęście istnieje znormalizowany, bezpieczny dla adresów URL wariant kodowania base64, określony w RFC 4648 jako „base64url”. Oto para funkcji do kodowania i dekodowania danych przy użyciu tego kodowania w PHP, na podstawie tej odpowiedzi udzielonej przez „gutzmer at usa dot net” :

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

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

(Uprościłem nieco funkcję dekodowania, ponieważ przynajmniej obecne wersje PHP najwyraźniej nie wymagają = dopełnienie znaków w wejściu do base64_decode() .)

Ps. Aby w pierwszej kolejności bezpiecznie wygenerować losowe tokeny, zobacz m.in. to pytanie .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Brak rozszerzenia mysqli debian

  2. Joomla:Wywołanie funkcji pomocniczej z modelu?

  3. Czy mogę porównać znacznik czasu MysQL z kolumnami daty i godziny? to jest złe?

  4. Jak pozbyć się błędu MySQL „Przygotowana instrukcja wymaga ponownego przygotowania”

  5. Dynamicznie zmieniaj połączenie z bazą danych w cakephp 3