Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menjana Rentetan Alfanumerik Rawak Selamat untuk Pautan Pengesahan dalam PHP?

Bagaimana untuk Menjana Rentetan Alfanumerik Rawak Selamat untuk Pautan Pengesahan dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-12-22 21:47:18468semak imbas

How to Generate Secure Random Alphanumeric Strings for Verification Links in PHP?

Menjana Rentetan Abjad Angka Unik untuk Pautan Pengesahan dalam PHP

Apabila mendaftar di tapak web, anda sering menerima e-mel yang mengandungi pautan untuk mengesahkan akaun anda. Pautan ini memerlukan rentetan rawak yang unik untuk memastikan keasliannya. Begini cara untuk menjana rentetan sedemikian dalam PHP.

Menggunakan Perpustakaan Standard PHP 7 (Disyorkan)

PHP 7 memperkenalkan fungsi random_bytes($length) untuk menjana pseudo selamat secara kriptografi -bait rawak.

$bytes = random_bytes(20);
var_dump(bin2hex($bytes));

PHP 5 (Lapuk)

Untuk versi PHP yang lapuk, gunakan bin2hex(openssl_random_pseudo_bytes($bytes)), yang menjana rentetan abjad angka rawak dengan panjang = $bytes * 2.

Dipertingkatkan Secara Kriptografi Selamat Fungsi

Fungsi berikut memenuhi semua kriteria keselamatan:

function getToken($length)
{
    $token = "";
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    $max = strlen($codeAlphabet);

    for ($i = 0; $i < $length; $i++) {
        $token .= $codeAlphabet[crypto_rand_secure(0, $max - 1)];
    }

    return $token;
}

crypto_rand_secure($min, $max) menggunakan openssl_random_pseudo_bytes untuk menjana nombor rawak antara $min dan $max. getToken($length) mencipta abjad tersuai dan menghasilkan rentetan panjang $length.

Kesimpulan

Menggunakan fungsi ini, anda boleh menjana rentetan rawak dan unik yang mantap untuk pelbagai tujuan berkaitan keselamatan, seperti pautan pengesahan dan token mendapatkan kata laluan.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Rentetan Alfanumerik Rawak Selamat untuk Pautan Pengesahan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn