Gunakan daftar periksa keamanan Claude Code untuk menjalankan spot-check cepat dan konkret pada autentikasi, validasi input, penanganan secrets, dan permukaan injeksi di aplikasi web.

Spot-check keamanan ringan adalah tinjauan cepat (biasanya 30–60 menit) yang dimaksudkan untuk menangkap masalah jelas berdampak tinggi sebelum code dikirim. Ini bukan audit penuh. Anggap seperti pemeriksaan keselamatan: Anda memindai jalur yang paling sering gagal di aplikasi nyata dan mencari bukti, bukan dugaan.
Daftar periksa keamanan Claude Code ini fokus pada area yang paling sering bermasalah di aplikasi web sehari-hari:
Ini tidak berusaha membuktikan ketiadaan bug, memodel ancaman kompleks, atau menggantikan penetration testing.
"Temuan konkret" berarti setiap isu yang Anda catat memiliki bukti yang bisa ditindaklanjuti oleh developer segera. Untuk tiap temuan, tangkap:
AI adalah pembantu, bukan otoritas. Gunakan untuk mencari, merangkum, dan mengusulkan tes. Lalu verifikasi dengan membaca kode dan, bila mungkin, mereproduksi dengan request nyata. Jika model tidak bisa menunjukkan lokasi dan langkah spesifik, anggap klaim tersebut belum terbukti.
Tinjauan cepat hanya berhasil jika Anda mempersempit target. Sebelum meminta Claude Code melihat sesuatu, putuskan apa yang ingin Anda buktikan hari ini dan apa yang tidak Anda periksa.
Mulai dengan 1 sampai 3 user journey nyata di mana kesalahan berbiaya uang, mengekspos data, atau memberi kekuasaan. Kandidat yang baik: login, reset kata sandi, checkout, dan layar edit admin.
Selanjutnya, sebutkan aset yang harus dilindungi. Jadilah spesifik: akun pengguna, aksi pembayaran, data pribadi, operasi khusus admin.
Lalu tulis asumsi ancaman dengan kata-kata biasa. Apakah Anda mempertahankan diri dari pengguna penasaran yang mengklik, penyerang eksternal dengan skrip, atau insider dengan akses tertentu? Jawaban Anda mengubah seperti apa "cukup baik".
Terakhir, definisikan lulus dan gagal supaya spot-check berakhir dengan temuan, bukan kesan. Aturan sederhana bekerja baik:
Jika Anda tidak bisa menjelaskan seperti apa kegagalan, ruang lingkup masih terlalu kabur.
Spot-check hanya bekerja jika model melihat tempat yang tepat. Kumpulkan bundel kecil kode dan catatan agar tinjauan bisa menghasilkan bukti, bukan tebakan.
Mulai dengan membagikan jalur kritis-keamanan: titik masuk request dan kode yang memutuskan siapa pengguna dan apa yang bisa mereka lakukan. Sertakan cukup kode di sekitarnya untuk menunjukkan aliran data.
Bundel praktis biasanya mencakup:
Tambahkan beberapa baris catatan lingkungan supaya asumsi eksplisit: session vs JWT, di mana token disimpan (cookie atau header), perilaku reverse proxy atau API gateway, worker antrean/cron, dan endpoint "internal-only" jika ada.
Sebelum mengejar bug, minta inventaris: titik masuk, endpoint istimewa, dan datastore yang disentuh. Ini mencegah permukaan yang terlewat.
Juga sepakati format keluaran yang memaksa temuan konkret. Tabel sederhana bekerja baik: Temuan, Tingkat Keparahan, Endpoint/File Terdampak, Bukti (cuplikan atau rentang baris), Skenario Eksploitasi, Saran Perbaikan.
Batasi waktu:
Tujuannya bukan cakupan sempurna. Ini serangkaian kecil temuan yang dapat diuji.
Buka aplikasi sambil membaca. Klik melalui UI dan perhatikan request yang muncul. Catatan harus menunjuk endpoint, parameter, dan sumber data tertentu.
Alur kerja yang muat dalam satu sesi:
Kebiasaan berguna: untuk setiap "terlihat baik," tulis apa yang akan Anda lakukan untuk memecahnya. Jika Anda tidak bisa menggambarkan upaya pemecahan, kemungkinan besar Anda belum memverifikasinya.
Autentikasi adalah tempat aplikasi memutuskan, "request ini milik orang ini." Spot-check cepat bukan membaca setiap baris. Ini menemukan tempat identitas ditetapkan, lalu memeriksa jalan pintas dan jalur kegagalan.
Temukan batas kepercayaan: di mana identitas pertama kali dibuat atau diterima? Bisa berupa cookie session, token bearer JWT, API key, atau mTLS di edge. Minta Claude Code menunjukkan file dan fungsi tepat yang mengubah "anonim" menjadi user id, dan mencantumkan setiap jalur lain yang dapat melakukan hal yang sama.
Pemeriksaan autentikasi yang layak dipindai:
Contoh praktis: jika email reset mengembalikan "akun tidak ditemukan," itu masalah enumerasi cepat. Bahkan dengan pesan generik, perbedaan timing bisa bocorkan fakta yang sama, jadi periksa waktu respons juga.
Otorisasi adalah pertanyaan yang paling merusak ketika salah: "Apakah pengguna ini diizinkan melakukan aksi ini pada resource ini?" Spot-check cepat harus sengaja mencoba memecah asumsi itu.
Tulis peran dan izin dengan bahasa sederhana. Buat manusiawi:
Lalu verifikasi setiap aksi sensitif menerapkan otorisasi di server, bukan hanya di UI. Tombol bisa disembunyikan, route bisa diblokir di klien, tetapi penyerang masih bisa memanggil API langsung.
Pemeriksaan cepat yang biasanya menemukan masalah nyata:
Bau klasik IDOR sederhana: request seperti GET /projects/{id} di mana {id} dikontrol pengguna, dan server memuatnya tanpa memverifikasi bahwa itu milik user atau tenant saat ini.
Prompt yang memaksa jawaban nyata:
"Untuk endpoint ini, tunjukkan kode tepat yang memutuskan akses, dan daftar kondisi spesifik yang memungkinkan pengguna dari orgId berbeda mengaksesnya. Jika tidak ada, jelaskan mengapa dengan nama file dan fungsi."
Sebagian besar masalah cepat pada web app bermula dari celah: aplikasi menerima input yang developer tidak harapkan. Anggap "input" sebagai apa pun yang bisa dipengaruhi pengguna atau sistem lain, bahkan jika terasa tidak berbahaya.
Mulai dengan memberi nama input untuk endpoint yang Anda spot-check:
Validasi harus terjadi dekat dengan tempat data masuk ke aplikasi, bukan jauh di dalam logika bisnis. Periksa dasar: tipe (string vs number), panjang maksimal, wajib vs opsional, dan format (email, UUID, tanggal).
Untuk nilai yang diketahui seperti peran, status, atau arah sortir, gunakan allowlist. Ini lebih sulit dilanggar daripada "blok beberapa nilai buruk."
Periksa juga penanganan error. Jika aplikasi menolak input, jangan memantulkan nilai mentah kembali di respon, log, atau UI. Itu cara bug validasi kecil berubah jadi kebocoran data atau pembantu injeksi.
Rencana mini "input buruk" untuk endpoint berisiko (login, search, upload, aksi admin):
Contoh: parameter sort yang menerima sembarang string bisa menjadi fragmen SQL nanti. Allowlist seperti "date" atau "price" mencegah kelas kesalahan itu sejak awal.
Sebagian besar tinjauan cepat menemukan masalah di beberapa tempat yang sama: di mana pun input pengguna diinterpretasikan sebagai kode, query, path, atau URL. Bagian ini tempat Anda berburu momen "input menyeberangi batas kepercayaan."
Telusuri data dari titik masuk (query params, header, cookie, unggahan, form admin) ke tempat akhirnya dipakai.
Perhatikan pola ini dan minta situs pemanggilan dan contoh payload untuk masing-masing:
ORDER BY dinamis, dan builder IN (...) yang menggabungkan nilai userJuga awasi deserialisasi dan template injection. Apa pun yang mengurai JSON, YAML, atau string bertemplat dari pengguna bisa menyembunyikan perilaku berisiko, terutama bila mendukung tipe kustom, ekspresi, atau rendering di sisi server.
Jika sebuah fitur menerima URL, nama file, atau teks berformat, anggap bisa disalahgunakan sampai Anda membuktikan sebaliknya dengan jalur kode dan tes.
Masalah secrets sering terlihat jelas setelah Anda tahu tempat mencarinya. Fokus pada tempat secrets berada dan di mana mereka bisa tersalin secara tidak sengaja.
Tempat umum secrets muncul:
Lalu paksa jawaban konkret: jika sebuah secret terekspos hari ini, apa yang terjadi selanjutnya? Sistem yang baik punya jalur rotasi (kunci baru diterbitkan), pencabutan (kunci lama dinonaktifkan), dan cara untuk redeploy cepat. Jika jawabannya "kami akan mengubahnya nanti," anggap itu temuan.
Least privilege adalah kemenangan cepat lainnya. Insiden memburuk karena kunci terlalu kuat. Cari user database yang bisa drop table, token pihak ketiga yang bisa mengelola akun, atau API key yang dibagi antar lingkungan. Utamakan satu kunci per layanan, per lingkungan, dengan seperangkat izin terkecil.
Prompt spot-check cepat yang bisa Anda tempel ke Claude Code:
Akhirnya, konfirmasi guardrail: blokir secrets dari source control (pre-commit/CI checks), dan pastikan backup atau snapshot tidak menyertakan kredensial plaintext. Jika platform Anda mendukung snapshot dan rollback, verifikasi secrets di-inject saat runtime, bukan dibakar ke image yang disimpan.
Prompt kabur menghasilkan jawaban kabur. Paksa model berkomitmen pada bukti: lokasi tepat, jejak yang bisa Anda ikuti, repro yang bisa dijalankan, dan apa yang membuat klaim itu salah.
Gunakan satu pola per kali, lalu minta revisi setelah Anda konfirmasi atau tolak detail.
Jika keluaran masih terasa kabur, sempitkan:
"Jawab hanya dengan: path file, nama fungsi, baris berisiko, dan satu-kalimat dampak."
Endpoint update profil sering menyembunyikan bug kontrol akses. Berikut kasus kecil yang bisa Anda jalankan melalui checklist ini.
Scenario: endpoint API memperbarui profil pengguna:
PATCH /api/profile?accountId=123 dengan JSON seperti { "displayName": "Sam" }.
Anda minta Claude Code menemukan handler, menelusuri bagaimana accountId dipakai, dan membuktikan apakah server menegakkan kepemilikan.
Yang sering muncul:
accountId dari query string dan memperbarui akun itu tanpa memeriksa bahwa itu cocok dengan pengguna yang login.displayName dipangkas, tapi accountId tidak divalidasi sebagai integer."... WHERE account_id=" + accountId.Penulisan yang baik bersifat konkret:
accountId diubah; SQL dibangun dari input tak tepercayaaccountId dari klien, gunakan account id dari user terautentikasi di server; parameterize queryaccountId non-numerikSetelah patch, cek kembali cepat:
accountId berbeda dan konfirmasi gagal.Cara tercepat melewatkan kerentanan adalah mempercayai apa yang tampak dilindungi UI. Tombol yang disembunyikan atau dinonaktifkan bukan cek izin. Jika server menerima request itu, siapa pun bisa memutarnya ulang dengan user ID berbeda, peran berbeda, atau panggilan API langsung.
Kegagalan umum lain adalah permintaan yang kabur. "Lakukan review keamanan" biasanya menghasilkan laporan generik. Spot-check butuh ruang lingkup ketat (endpoint mana, peran mana, data mana) dan format keluaran ketat (nama file, fungsi, baris berisiko, repro minimal).
Aturan yang sama berlaku untuk keluaran AI: jangan terima klaim tanpa petunjuk. Jika temuan tidak menyertakan lokasi kode konkret dan langkah demi-langkah untuk memicunya, anggap belum terbukti.
Perangkap ini sering muncul:
Jika Anda mendapati diri terus menambahkan filter setelah tiap edge case baru, berhenti. Perbaikan biasanya lebih awal dan sederhana: validasi input di boundary, dan buat cek otorisasi eksplisit dan terpusat sehingga setiap jalur kode menggunakannya.
Ini tidak menggantikan review penuh, tapi menangkap kesalahan yang sering lolos saat semua orang lelah. Fokus pada apa yang bisa Anda buktikan cepat: request yang bisa dikirim, halaman yang bisa dimuat, baris log yang bisa ditemukan.
Lima spot-check cepat yang biasanya berbuah:
Tuliskan 3 perbaikan teratas yang bisa Anda kirim minggu ini, bukan daftar keinginan. Contoh: (1) tambahkan rate limiting ke login dan reset kata sandi, (2) tegakkan cek kepemilikan server-side pada endpoint "get by id", (3) batasi panjang input dan tolak karakter tak terduga untuk field search.
Spot-check hanya berbuah jika hasilnya mengubah apa yang Anda kirim. Perlakukan checklist ini sebagai langkah kecil yang berulang dalam build, bukan misi penyelamatan sekali saja.
Ubah setiap temuan menjadi item backlog yang sulit disalahpahami:
Pilih ritme yang cocok dengan risiko dan ukuran tim Anda. Untuk banyak tim, setiap rilis adalah yang terbaik. Jika rilis sering, lakukan review 30–60 menit bulanan dan pengecekan lebih singkat sebelum pengiriman.
Permudah pengulangan dengan membuat paket prompt yang dapat digunakan ulang dan template checklist. Pertahankan prompt fokus pada keluaran konkret: tunjukkan route, penjaga, request yang gagal, dan perilaku yang diharapkan. Simpan paket itu di tempat tim Anda sudah bekerja supaya tidak terlewat.
Jika Anda membangun aplikasi lewat chat, masukkan checklist ke dalam perencanaan. Tambahkan catatan singkat "asumsi keamanan" untuk autentikasi/otorisasi, input, dan secrets, lalu jalankan spot-check segera setelah versi kerja pertama.
Platform seperti Koder.ai dapat cocok dengan kebiasaan ini karena memungkinkan iterasi cepat sambil menjaga titik pemeriksaan review. Menggunakan snapshot dan rollback di sekitar perubahan berisiko mempermudah pengiriman perbaikan keamanan tanpa tersendat saat perubahan mengganggu perilaku.