sql >> Databáze >  >> RDS >> Mysql

Hašování nebo šifrování proměnných, které mají být odeslány v adrese URL

Výstupem většiny šifrovacích (nebo hašovacích atd.) rutin jsou libovolná binární data, která nelze bezpečně zahrnout do adresy URL bez jejího zakódování.

Jako vaječné poznámky , jednoduše pomocí urlencode() na údajích by mělo stačit. Standardní kódování URL však nemusí být nejkompaktnějším způsobem kódování náhodných binárních dat. Base64 kódování by bylo efektivnější, ale bohužel není zcela bezpečné pro adresy URL kvůli použití + postava.

Naštěstí existuje standardizovaná varianta kódování base64 bezpečná pro adresy URL, specifikovaná v RFC 4648 jako "base64url". Zde je dvojice funkcí pro kódování a dekódování dat pomocí tohoto kódování v PHP, na základě této odpovědi od "gutzmer at usa dot net" :

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

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

(Trochu jsem zjednodušil funkci dekódování, protože alespoň současné verze PHP zjevně nevyžadují = vyplňování znaků ve vstupu do base64_decode() .)

Ps. Pro bezpečné generování náhodných tokenů na prvním místě, viz např. tato otázka .



  1. Je datum klíčové slovo v mysql?

  2. Práce s daty Salesforce.com v SQL Server Reporting Services

  3. mysql spojí dvě tabulky s ID oddělenými čárkami

  4. Jak mohu filtrovat znaky Emoji z mého vstupu, abych mohl uložit v MySQL <5.5?