Mysql
 sql >> база данни >  >> RDS >> Mysql

Хеширане или криптиране на променливи, които да бъдат изпратени в URL адрес

Резултатът от повечето процедури за криптиране (или хеширане и т.н.) е произволни двоични данни, които не могат да бъдат безопасно включени в URL, без да са кодирани.

Като бележки за яйца , просто с помощта на urlencode() на данните трябва да са достатъчни. Въпреки това, стандартното URL кодиране може да не е най-компактният начин за кодиране на произволни двоични данни. Base64 кодирането би било по-ефективно, но за съжаление не е напълно безопасно за URL, поради използването на + знак.

За щастие съществува стандартизиран безопасен за URL вариант на кодирането base64, посочен в RFC 4648 като "base64url". Ето двойка функции за кодиране и декодиране на данни с помощта на това кодиране в PHP, въз основа на този отговор от "gutzmer at usa dot net" :

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

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

(Опростих малко функцията за декодиране, тъй като поне текущите версии на PHP очевидно не изискват = допълващи знаци във входа към base64_decode() .)

Пс. За сигурно генериране на произволни токени на първо място, вижте напр. този въпрос .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. използвайте пълно текстово търсене, за да търсите непълни думи в mysql

  2. Вземете първи/последни n записа на група от

  3. Ускоряване на perl DBI fetchrow_hashref

  4. Генерирайте произволна LocalDate с java.time

  5. Кога трябва да използвам MySQL транзакции?