Keamanan Password di CodeIgniter 3
Password adalah data paling sensitif dalam sebuah aplikasi. Di CodeIgniter 3, kesalahan umum adalah mengambil input secara sembarangan dan menyimpan password dengan cara yang salah.
Kesalahan Umum Developer CI3
- Menggunakan md5 / sha1 / sha512
- Tidak menggunakan salt
- Meng-hash password secara manual
- Menyimpan password asli
Semua cara di atas tidak aman.
❌ Contoh Cara Tidak Aman (CI3)
$password = $this->input->post('password');
$hash = hash('sha512', $password);
Masalahnya:
- Tidak ada salt
- Password sama menghasilkan hash sama
- Rentan rainbow table
❌ Salt Manual Tetap Salah
$password = $this->input->post('password');
$salt = 'rahasia_aplikasi';
$hash = hash('sha512', $salt . $password);
Kenapa ini tetap berbahaya:
- Salt statis
- Jika bocor, semua password bocor
- Hash terlalu cepat untuk password
✅ Cara Aman dan Benar di CodeIgniter 3
Gunakan fungsi bawaan PHP yang memang dibuat khusus untuk password:
- password_hash()
- password_verify()
CodeIgniter 3 cukup sebagai pengambil input saja.
Menyimpan Password (Register) – CI3
$password = $this->input->post('password', TRUE);
$hash = password_hash(
$password,
PASSWORD_BCRYPT
);
// simpan $hash ke database
Yang disimpan ke database adalah hash, bukan password asli.
Memverifikasi Password (Login) – CI3
$password = $this->input->post('password', TRUE);
$hash_db = $user->password;
if (password_verify($password, $hash_db)) {
// login berhasil
} else {
// login gagal
}
Tidak perlu meng-hash ulang input user secara manual. PHP yang mengurus pencocokannya.
Migrasi Aplikasi Lama CI3
Jika aplikasi lama sudah terlanjur memakai SHA atau MD5:
- Jangan migrasi massal
- Migrasi saat user login
$password = $this->input->post('password', TRUE);
if (hash('sha512', $password) === $hash_lama) {
$hash_baru = password_hash($password, PASSWORD_BCRYPT);
// update password ke database
}
Kesimpulan
- Gunakan $this->input->post() di CI3
- Jangan gunakan md5 / sha
- Jangan simpan password asli
- Gunakan password_hash()
- Gunakan password_verify()
Keamanan password bukan soal framework, tapi soal tidak salah konsep.

Komentar