Error handling, logging, dan audit yang aman — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 12 DARI 28

Error handling, logging, dan audit yang aman

Berikan pesan pengguna yang aman sambil menyimpan detail diagnostik minimum pada log internal.

Tujuan pembelajaran

  • Membedakan user message dan internal log.
  • Menggunakan correlation ID.
  • Menghindari data sensitif pada log.

Konsep utama

Fail safely

Kegagalan authorization atau validasi harus menolak operasi.

Structured logging

Catat event, waktu, actor ID, object ID, dan hasil tanpa password/token.

Alur kerja teknis

  1. Tulis tujuan dan acceptance criteria.
  2. Buat perubahan kecil yang dapat ditinjau.
  3. Jalankan test dan baca diff sebelum menerima hasil AI.

Contoh implementasi

Pesan generik dan log internal

try {
    $service->save($input);
} catch (Throwable $e) {
    $requestId = bin2hex(random_bytes(8));
    error_log("[request={$requestId}] ".get_class($e).": ".$e->getMessage());
    http_response_code(500);
    echo "Permintaan tidak dapat diproses. ID: ".htmlspecialchars($requestId);
}

Structured event tanpa secret

console.error(JSON.stringify({
  event: "profile_update_failed",
  requestId: req.id,
  userId: req.user.id,
  errorType: error.name
}));

Aspek keamanan

  • Jangan log password, token, cookie, atau isi authorization header.
  • Jangan tampilkan stack trace ke publik.
  • Audit mutation penting tanpa menyimpan payload sensitif.

Kesalahan umum

  • Menerima kode AI tanpa membaca diff dan memahami alur data.
  • Menguji hanya happy path dan mengabaikan input salah atau batas nilai.
  • Menyimpan secret, token, atau data nyata di prompt dan source code.

Pengujian dan verifikasi

  1. Jalankan contoh dengan input normal.
  2. Ulangi dengan input kosong, tipe salah, dan nilai batas.
  3. Pastikan error tidak membocorkan secret atau detail internal.

Latihan

  1. Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
  2. Tambahkan satu negative test lalu jelaskan risiko yang dicegah.

Checklist

  • Tujuan dan batas pekerjaan jelas.
  • Input divalidasi di server.
  • Secret tidak berada di source/prompt.
  • Test lulus dan diff sudah dibaca.

Rangkuman

Berikan pesan pengguna yang aman sambil menyimpan detail diagnostik minimum pada log internal.