Menjana Rentetan Abjad Angka Unik untuk Pengesahan
Dalam aplikasi web, adalah perkara biasa untuk menghantar pautan pengesahan kepada pengguna. Pautan ini biasanya mengandungi rentetan unik untuk mengenal pasti pengguna dan mengesahkan akaun mereka. Menjana rentetan sedemikian memerlukan pendekatan rawak dan selamat.
PHP menyediakan beberapa kaedah untuk menjana rentetan rawak. Satu pilihan selamat ialah menggunakan fungsi random_bytes(), tersedia dalam PHP 7 dan lebih baru. Fungsi ini menjana bait pseudo-rawak yang selamat secara kriptografi. Contohnya:
$bytes = random_bytes(20); $string = bin2hex($bytes);
Ini akan menjana rentetan alfanumerik 40 aksara.
Dalam versi PHP yang lebih lama, fungsi openssl_random_pseudo_bytes() boleh digunakan sebaliknya. Ia juga menjana bait pseudo-rawak yang selamat secara kriptografi.
$bytes = openssl_random_pseudo_bytes(20); $string = bin2hex($bytes);
Pendekatan lain ialah menggunakan fungsi uniqid(). Walaupun ia digunakan terutamanya untuk menjana pengecam unik, ia juga boleh digunakan untuk mencipta rentetan rawak:
$string = uniqid('', true);
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa uniqid() tidak selamat dari segi kriptografi dan tidak boleh digunakan untuk sensitif tujuan.
Untuk aplikasi yang memerlukan tahap keselamatan yang tinggi, fungsi tersuai boleh dilaksanakan untuk menjana kuat dari segi kriptografi rentetan:
function crypto_rand_secure($min, $max) { $range = $max - $min; if ($range < 1) return $min; $log = ceil(log($range, 2)); $bytes = (int) ($log / 8) + 1; $bits = (int) $log + 1; $filter = (int) (1 << $bits) - 1; do { $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes))); $rnd = $rnd & $filter; } while ($rnd > $range); return $min + $rnd; } function getToken($length) { $token = ""; $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $max = strlen($codeAlphabet) - 1; for ($i=0; $i < $length; $i++) { $token .= $codeAlphabet[crypto_rand_secure(0, $max)]; } return $token; }
Fungsi crypto_rand_secure() menjana nombor rawak dalam julat yang ditentukan. Fungsi getToken() mencipta token dengan panjang tertentu menggunakan abjad aksara abjad angka.
Dengan menggunakan teknik ini, anda boleh menjana rentetan abjad angka yang selamat dan unik untuk pelbagai tujuan pengesahan dalam PHP.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Rentetan Alfanumerik yang Selamat dan Unik dalam PHP untuk Pengesahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!