Back to blog
Security

Mengamankan Password Database Menggunakan Hashing Bcrypt

Hanya developer tidak bertanggung jawab yang menyimpan password pengguna secara telanjang (Plaintext). Lindungi databasemu dengan teknik Hashing satu arah.

super admin·30 Juni 2026·2 min read
Mengamankan Password Database Menggunakan Hashing Bcrypt
Article Content

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