Keluaran dari sebagian besar enkripsi (atau hashing, dll.) adalah data biner arbitrer, yang tidak dapat dimasukkan dengan aman ke dalam URL tanpa menyandikannya.
Sebagai catatan telur
, cukup menggunakan urlencode()
pada data harus cukup. Namun, pengkodean URL standar mungkin bukan cara yang paling ringkas untuk mengkodekan data biner acak. Base64
encoding akan lebih efisien, tetapi sayangnya tidak sepenuhnya aman untuk URL karena penggunaan +
karakter.
Untungnya, ada varian standar aman URL dari pengkodean base64, yang ditentukan dalam RFC 4648 sebagai "base64url". Berikut sepasang fungsi untuk encoding dan decoding data menggunakan encoding ini di PHP, berdasarkan jawaban ini oleh "gutzmer at usa dot net" :
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(strtr($data, '-_', '+/'));
}
(Saya telah sedikit menyederhanakan fungsi decoding, karena setidaknya versi PHP saat ini tampaknya tidak memerlukan =
karakter padding dalam input ke base64_decode()
.)
hal. Untuk menghasilkan token acak dengan aman, lihat mis. pertanyaan ini .