FixVibe

// docs / security guides / cursor checklist

Checklist keamanan Cursor: 28 item sebelum rilis

Membangun dengan Cursor? Pelengkapan otomatis Cursor, mode Komposer, dan fitur Agen sangat canggih โ€” dan menciptakan titik buta keamanan yang dapat diprediksi. Daftar periksa ini menargetkan pola khusus Cursor: sebaris kunci peran layanan, seluruh file yang dihasilkan Komposer tanpa peninjauan, perintah terminal mode Agen, dan file <code>.cursorrules</code> sebagai pagar pembatas keamanan pertama Anda. 28 item di seluruh rahasia, database, autentikasi, header, penerapan, dan Cursor - gotcha khusus.

PRE = pra-penerapan (audit sumber Anda). DEPLOY = pada waktu penerapan. POST = verifikasi pasca penerapan. Referensi item FixVibe periksa ID dalam formulir category.check-id jika relevan.

Rahasia dan kunci API (5 item)

Pelengkapan otomatis Cursor dilatih pada kode sumber terbuka di mana rahasia adalah hal yang umum. Model menyarankannya secara bebas, terutama setelah upaya autentikasi gagal.

  1. PRE โ€” Write security rules into .cursorrules. Tambahkan baris: "Jangan pernah memasukkan SUPABASE_SERVICE_ROLE_KEY, sk_live_*, atau env var apa pun yang dimulai dengan akronim penyedia ke dalam kode sisi klien. Selalu gunakan impor khusus server." Cursor membaca .cursorrules dan memasukkannya ke dalam setiap saran.
  2. PRE โ€” Audit Composer-generated files. Ketika Komposer Cursor membuat seluruh file (terutama penangan autentikasi), tinjau baris demi baris. Komposer terkadang memasukkan env vars yang seharusnya tetap hanya untuk server. Cari NEXT_PUBLIC_ atau referensi langsung ke kunci layanan dalam impor komponen.
  3. PRE โ€” Reject auto-imports of service clients into client components. Jika Komposer mengimpor import { supabase } from '@/lib/supabase/service' ke dalam file React, segera hapus file tersebut dan rutekan melalui titik akhir API sebagai gantinya. Impor khusus server ditandai secara eksplisit โ€” jangan lewati.
  4. PRE โ€” Scan Agent-mode commits. Mode agen menjalankan perintah terminal dan dapat melakukan commit secara langsung. Audit git log --oneline -20 dan git diff HEAD~5 untuk memastikan tidak ada string yang tampak rahasia yang dilakukan selama menjalankan Agen.
  5. POST โ€” Run secrets.browser-storage. Pemindaian pasif pada URL yang diterapkan. Jika kunci layanan muncul di bundel JS, segera putar kunci tersebut โ€” pelengkapan otomatis Cursor mungkin akan memasukkannya ke dalamnya.

Kontrol akses basis data (4 item)

Komposer sering kali membuat kode autentikasi yang berfungsi tetapi melewatkan RLS โ€” momen "berhasil" membutakan orang terhadap penegakan kebijakan yang hilang.

  1. PRE โ€” Force Cursor to generate migrations with RLS. Dalam .cursorrules: "Setiap CREATE TABLE public.* migrasi harus menyertakan ALTER TABLE ... ENABLE ROW LEVEL SECURITY dan FORCE ROW LEVEL SECURITY." Kemudian minta Komposer untuk membuat migrasi.
  2. PRE โ€” Review Composer-generated policies. Komposer terkadang menulis kebijakan tanpa memeriksa auth.uid(). Kebijakan seperti allow select on public.items tanpa klausa using sangatlah luas. Memerlukan pencocokan user_id.
  3. DEPLOY โ€” Confirm FORCE ROW LEVEL SECURITY is live. Buka Supabase Studio, periksa tombol RLS setiap tabel. Jika migrasi Komposer memiliki ENABLE tetapi lupa FORCE, pemilik tabel (migrasi Anda) mengabaikan RLS. Ini adalah kesenjangan yang nyata.
  4. POST โ€” Run the baas.supabase-rls active check. Ia mencoba menulis dengan kunci anon. Jika berhasil, RLS sebenarnya tidak diterapkan โ€” kemungkinan kata kunci FORCE tidak ada.

Otentikasi dan sesi (4 item)

Cursor menghasilkan aliran autentikasi dengan cepat namun sering kali melewatkan validasi sisi server yang menjaga keamanan token.

  1. PRE โ€” Ensure all auth routes use getUser(). Cari getSession() di rute API Anda dan ganti dengan await supabase.auth.getUser(). getSession() membaca cookie yang belum diverifikasi; getUser() memvalidasi dengan Supabase backend.
  2. PRE โ€” Check Composer auth handlers for token expiry. Token tautan ajaib memerlukan expires_at yang didukung server. Default Supabase adalah 1 jam โ€” jangan minta Cursor untuk menggantinya tanpa alasan yang jelas.
  3. PRE โ€” Audit the sign-in redirect guard. Pengalihan parameter kueri next setelah masuk harus divalidasi: harus dimulai dengan /, jangan pernah //. Komposer terkadang melewatkan ini. Tambahkan secara manual jika tidak ada.
  4. POST โ€” Test logout server-side state destruction. Masuk, keluar, periksa cookie (DevTools โ†’ Aplikasi โ†’ Cookie). Cookie sesi harus segera dihapus. Jika tetap ada, penangan logout tidak merusak status.

HTTP header keamanan dan CSP (3 item)

Cursor jarang menghasilkan middleware secara default. Kalau tidak tanya secara eksplisit, CSP dan HSTS biasanya tidak ada.

  1. PRE โ€” Demand CSP in .cursorrules. Tambahkan: "Buat src/middleware.ts dengan Content-Security-Policy. Gunakan nonce untuk script-src, tidak ada inline yang tidak aman." Kemudian minta Cursor untuk membuatnya. Tanpa petunjuk ini, middleware dilewati.
  2. PRE โ€” Verify src/middleware.ts exists. Dengan tata letak direktori src/, Next.js hanya mengambil src/middleware.ts. middleware.ts tingkat root diabaikan secara diam-diam. Jika CSP tidak mendarat, periksa apakah file berada di tempat yang tepat.
  3. POST โ€” Run headers.security-headers. Laporan pemindaian pasif hilang CSP, HSTS, X-Frame-Options, X-Content-Type-Options. Buka laporan dan ikuti panduan perbaikan untuk platform penerapan Anda.

Kebersihan penempatan (5 item)

Cursor aplikasi sering kali mendarat di Vercel, yang memiliki default yang baik namun memerlukan pengerasan eksplisit untuk batas build/deploy.

  1. DEPLOY โ€” Check Vercel env-var scoping. Pengaturan โ†’ Variabel Lingkungan โ†’ setiap rahasia harus dicakup hanya pada Production. Jangan pernah berbagi sk_live_* dengan Pratinjau atau Pengembangan.
  2. DEPLOY โ€” Disable build-log secret echo. Jika alur kerja Tindakan vercel.json atau GitHub Anda memiliki echo $SECRET, hapus alur kerja tersebut. Log build diarsipkan secara publik; rahasia dalam log dikompromikan.
  3. DEPLOY โ€” Use Vercel's managed secrets, not inline workflow vars. Vercel Pengaturan โ†’ Variabel Lingkungan dienkripsi saat istirahat. GitHub Rahasia tindakan lebih baik daripada tidak sama sekali, tetapi dirancang untuk CI, bukan integrasi platform penerapan.
  4. POST โ€” Verify CSP nonce on the deployed preview. Buka tautan pratinjau Vercel di browser, buka DevTools โ†’ Jaringan โ†’ respons root HTML. CSP header harus ada dan menyertakan 'strict-dynamic' dengan nonce unik per permintaan.
  5. POST โ€” Rotate any key that ever shipped, even to Preview. Jika kunci mencapai paket produksi bahkan selama 10 menit, maka kunci tersebut telah disusupi. Segera putar.

Cursor - gotcha khusus (4 item)

Pola unik pada alur kerja Cursor yang menimbulkan risiko keamanan:

  1. Agent mode auto-fixes propagate old patterns. Jika Anda meminta Agen untuk "memperbaiki kesalahan autentikasi", Agen dapat membuat ulang file autentikasi yang sama beberapa kali, setiap kali memasukkan kunci layanan yang sama jika berada dalam konteks basis kode. Bersihkan dulu yang asli, lalu minta Agen memperbaikinya.
  2. Pengindeksan Cursor Index leaks intent. Cursor @codebase sangat kuat tetapi jika direktori .cursor Anda pernah terekspos (S3 yang salah dikonfigurasi, riwayat git), indeks akan mengungkapkan arsitektur dan pola rahasia Anda. Pertahankan .cursor lokal.
  3. Composer mode loses context between files. Setiap file yang dihasilkan Komposer adalah yang baru. Jika Anda memintanya untuk membuat file klien, lalu rute API, mereka mungkin menggunakan konfigurasi klien Supabase yang berbeda. Tinjau keduanya dan pastikan keduanya cocok dengan arsitektur Anda.
  4. Autocomplete bias toward "working" over "secure". Cursor menyarankan kode tercepat yang melewati konteks Anda saat ini. Jika pengujian Anda memiliki NEXT_PUBLIC_SERVICE_KEY, pelengkapan otomatis akan mengingatnya dan menyarankannya kembali. Bersihkan perlengkapan pengujian sebelum membagikan kode dengan model.

Langkah selanjutnya

Setelah Anda mengunci pola khusus Cursor, periksa silang dengan general vibe coding security checklist (44 item) dan kemudian step-by-step hardening. Lihat juga Claude Code checklist jika Anda sedang mencampur alat.

// scan your app

Cukup membaca. Saatnya temukan celah di aplikasimu.

Kunjungi URL โ€” FixVibe menjalankan setiap pemeriksaan pasif dari panduan ini ditambah 200+ pemeriksaan lainnya dalam waktu kurang dari satu menit. Free, tanpa instalasi, tanpa kartu.

  • Free tingkat โ€” 3 pemindaian / bulan, tanpa kartu.
  • Pemindaian pasif terhadap URL apa pun โ€” tidak memerlukan verifikasi domain.
  • Disetel untuk Cursor, Claude Code, Lovable, Bolt, v0, Replit.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
Checklist keamanan Cursor: 28 item sebelum rilis โ€” Docs ยท FixVibe