Cara Menyulitkan dan Menyahsulit Kata Laluan dengan Selamat dalam PHP
Menyimpan maklumat pengguna sensitif, seperti bukti kelayakan akaun asing, memerlukan langkah berjaga-jaga khas untuk memastikan data keselamatan. Walaupun penyulitan menyediakan lapisan perlindungan, adalah penting untuk menggunakan kaedah teguh yang menghalang akses tanpa kebenaran kepada data teks biasa.
Hashing lwn. Penyulitan
Hashing ialah pendekatan pilihan untuk penyimpanan kata laluan. Tidak seperti penyulitan, pencincangan mengubah kata laluan kepada format yang unik dan tidak boleh balik, menjadikannya hampir mustahil untuk mendapatkan kata laluan asal. Ini memastikan bahawa walaupun penyerang mendapat akses kepada kata laluan yang dicincang, mereka tidak boleh menjejaskan akaun pengguna.
Fungsi Penyulitan dan Penyahsulitan
Untuk situasi di mana penyulitan diperlukan, PHP menyediakan beberapa fungsi untuk menyulitkan dan menyahsulit teks. Satu kaedah biasa ialah sifir Rijndael, juga dikenali sebagai AES-128:
$key = 'password to (en/de)crypt'; $string = ' string to be encrypted '; // note the spaces
Untuk Menyulitkan:
$iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM ); $encrypted = base64_encode( $iv . mcrypt_encrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), $string, MCRYPT_MODE_CBC, $iv ) );
Untuk Nyahsulit:
$data = base64_decode($encrypted); $iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv ), "" );
Amaran
Data yang disulitkan terdedah kepada serangan oracle padding jika tidak disahkan. Mekanisme penyulitan yang disahkan hendaklah sentiasa digunakan bersama-sama dengan penyulitan.
Amalan Terbaik
Untuk memastikan tahap keselamatan tertinggi, ikuti amalan terbaik ini:
Atas ialah kandungan terperinci Bagaimana untuk Menyulitkan dan Menyahsulit Data dengan Selamat Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!