Penjanaan Nombor Rawak Selamat dalam PHP
Menjana nombor rawak selamat dalam PHP adalah penting untuk aplikasi seperti penetapan semula kata laluan, di mana kata laluan asal dicincang dan tidak tersedia. Walaupun mt_rand tidak mencukupi, sistem pengendalian atau modul nombor rawak kriptografi mungkin tidak boleh diakses.
Cadangan Penyelesaian dan Kebimbangan
Pendekatan yang dicadangkan melibatkan penyimpanan benih awal dan pengiraan nombor rawak seterusnya menggunakan formula:
hasil = benih
benih = sha512(seed . mt_rand())
Walaupun sha512 selamat, penggunaannya di sini adalah rosak. Panggilan mt_rand tidak meningkatkan keselamatan, dan benih dibatalkan. Salah tanggapan ini mencadangkan kelemahan dalam reka bentuk sistem keselamatan.
Pendekatan Disyorkan
Daripada bergantung pada cincang untuk menjana entropi, adalah sangat disyorkan untuk menggunakan entropi sistem sumber:
Berikut ialah contoh kod PHP daripada php.net untuk mendapatkan rentetan 128-bit yang selamat daripada ini sumber:
$pr_bits = ''; // Unix/Linux platform $fp = @fopen('/dev/urandom','rb'); if ($fp !== FALSE) { $pr_bits .= @fread($fp,16); @fclose($fp); } // MS-Windows platform if (@class_exists('COM')) { try { $CAPI_Util = new COM('CAPICOM.Utilities.1'); $pr_bits .= $CAPI_Util->GetRandom(16,0); } catch (Exception $ex) { // Handle exception } } if (strlen($pr_bits) < 16) { // Handle entropy source issue }
Menggunakan pendekatan ini memastikan penjanaan nombor rawak selamat, yang penting untuk melindungi data sensitif dalam aplikasi PHP.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nombor Rawak Selamat dalam PHP untuk Aplikasi Sensitif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!