Pendahuluan
Hashing password adalah teknik keamanan yang digunakan untuk menyimpan kata sandi dalam bentuk terenkripsi sehingga sulit ditebak oleh pihak yang tidak berwenang. Dalam pengembangan aplikasi PHP, ada berbagai metode hashing yang digunakan untuk mengamankan password pengguna. Artikel ini akan membahas cara mengetahui jenis hashing password yang digunakan dalam suatu proyek PHP dengan melihat kode sumber (source code) aplikasi tersebut.
Mengapa Perlu Mengetahui Jenis Hashing?
Mengetahui jenis hashing yang digunakan dalam suatu proyek sangat penting karena:
- Keamanan: Beberapa algoritma hashing yang lebih lama memiliki kelemahan keamanan.
- Kompatibilitas: Jika ingin mengintegrasikan sistem dengan layanan lain, perlu memastikan bahwa jenis hashing yang digunakan kompatibel.
- Upgrade Sistem: Jika proyek menggunakan algoritma yang sudah usang, maka perlu dilakukan upgrade ke metode yang lebih aman.
Metode Hashing yang Umum Digunakan di PHP
PHP menyediakan berbagai metode hashing untuk mengamankan kata sandi. Berikut adalah beberapa yang paling umum digunakan:
- MD5 (
md5()
) - SHA-1 (
sha1()
) - SHA-256 (
hash('sha256', $password)
) - bcrypt (
password_hash($password, PASSWORD_BCRYPT)
) - Argon2 (
password_hash($password, PASSWORD_ARGON2I/PASSWORD_ARGON2ID)
)
Cara Mengetahui Jenis Hashing dari Source Code
Untuk mengetahui jenis hashing yang digunakan dalam suatu proyek PHP, langkah-langkah berikut dapat dilakukan:
1. Periksa Fungsi Hashing yang Digunakan
Buka file kode sumber yang berkaitan dengan otentikasi atau penyimpanan password. Cari fungsi hashing yang digunakan dalam kode. Contohnya:
$password_hashed = md5($password);
Kode di atas menggunakan MD5, yang sudah tidak direkomendasikan karena kelemahan keamanannya.
Jika menemukan kode seperti ini:
$password_hashed = password_hash($password, PASSWORD_BCRYPT);
Maka proyek menggunakan bcrypt, yang lebih aman dibanding MD5 atau SHA-1.
2. Periksa Struktur Hash di Basis Data
Jika akses ke database tersedia, periksa panjang dan format hash yang tersimpan dalam kolom password. Berikut adalah indikasi umum dari algoritma hashing berdasarkan panjang hash:
Algoritma | Contoh Hash | Panjang |
---|---|---|
MD5 | 5f4dcc3b5aa765d61d8327deb882cf99 | 32 karakter |
SHA-1 | f7c3bc1d808e04732adf679965ccc34ca7ae3441 | 40 karakter |
SHA-256 | e3afed0047b08059d0fada10f400c1e5d8f7a0557e897cbdbe7f9b79abf0c8a3 | 64 karakter |
bcrypt | $2y$10$eImiTXuWVxfM37uY4JANjQ== | 60 karakter |
Argon2 | $argon2id$v=19$m=1024,t=2,p=2$... | >95 karakter |
Jika menemukan hash dengan pola tertentu, seperti yang diawali dengan $2y$
atau $argon2id$
, itu menandakan penggunaan bcrypt atau Argon2.
3. Cari Konfigurasi Keamanan
Beberapa proyek PHP menyimpan konfigurasi hashing di dalam file konfigurasi, seperti config.php
atau .env
. Periksa apakah ada pengaturan seperti:
define('HASH_ALGO', 'bcrypt');
atau dalam file .env
:
HASHING_ALGORITHM=argon2id
4. Periksa Penggunaan Framework PHP
Jika proyek menggunakan framework seperti Laravel atau CodeIgniter, hashing password biasanya dikelola oleh sistem autentikasi bawaan. Untuk Laravel, hashing dilakukan dengan:
Hash::make($password);
Untuk CodeIgniter:
password_hash($password, PASSWORD_DEFAULT);
5. Lihat Fungsi Verifikasi Password
Selain hashing, PHP memiliki fungsi verifikasi password seperti password_verify()
. Jika kode menggunakan:
if (password_verify($input_password, $stored_hash)) {
echo "Password benar";
}
Maka besar kemungkinan proyek menggunakan password_hash()
dengan bcrypt atau Argon2.
Kesimpulan
Mengetahui jenis hashing password yang digunakan dalam proyek PHP sangat penting untuk menjaga keamanan sistem. Dengan melihat kode sumber, database, dan konfigurasi proyek, kita bisa menentukan metode hashing yang digunakan dan menilai apakah masih aman atau perlu diperbarui ke metode yang lebih kuat seperti bcrypt atau Argon2. Jika proyek masih menggunakan MD5 atau SHA-1, sangat disarankan untuk segera beralih ke metode yang lebih aman.