
Bencana Kebocoran Data (Data Breach)
Coba perhatikan fungsi CREATE (POST) yang kita buat di artikel sebelumnya. Kita mengambil *password* rahasia123 dari Frontend, lalu menyimpannya mentah-mentah (*Plaintext*) ke PostgreSQL. Jika admin *Database* membuka tabel User, ia bisa melihat seluruh *password* pelanggan dengan mata telanjang!
Jika *database*-mu diretas *hacker*, *hacker* tersebut bisa login ke akun Gojek/Shopee pengguna menggunakan *password* yang sama. Untuk mencegahnya, kita harus "Mengacak-acak" (Hashing) password tersebut.
Enkripsi vs Hashing (Perbedaan Krusial)
Enkripsi bekerja dua arah. Jika kamu mengubah teks "A" menjadi sandi "X", kamu bisa mengubah "X" kembali menjadi "A" jika punya kuncinya. Ini TIDAK COCOK untuk *password*.
Hashing bekerja SATU ARAH. Jika teks "A" di-hash menjadi "X", teks "X" itu MUSTAHIL (secara matematika) bisa dikembalikan lagi menjadi "A" oleh siapapun (termasuk olehmu sebagai pembuat aplikasi!).
Menerapkan Bcrypt di Node.js
Kita akan menggunakan *library* standar industri paling terpercaya bernama bcrypt.
Buka terminal dan install: npm install bcrypt.
Sekarang, mari kita ubah fungsi POST (Register) dari artikel sebelumnya. Kita wajib men-hash passwordnya SEBELUM dimasukkan ke fungsi Prisma.
const bcrypt = require('bcrypt'); // Panggil library di atas file
app.post('/api/register', async (req, res) => {
try {
const { nama, email, passwordMentah } = req.body;
// 1. Generate "Garam" (Salt) pengacak sebanyak 10 putaran
const saltRounds = 10;
// 2. Hash passwordnya! (Proses ini butuh waktu, pakai await)
const hashedPassword = await bcrypt.hash(passwordMentah, saltRounds);
// 3. Simpan password yang sudah jadi sampah teks ke Database
const userBaru = await prisma.user.create({
data: {
nama: nama,
email: email,
password: hashedPassword // BUKAN passwordMentah lagi!
}
});
res.status(201).json({ pesan: "Akun berhasil dibuat secara aman!" });
} catch (error) {
res.status(400).json({ pesan: "Error. Email mungkin sudah ada." });
}
});Hasil di Database
Sekarang, coba daftarkan *user* dengan password rahasia123. Jika kamu membuka PostgreSQL, isi kolom passwordnya akan terlihat seperti ini: $2b$10$X8m1w.... Sekalipun hacker menyedot seluruh database-mu, data pengguna akan tetap aman tak tersentuh!
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates