FixVibe

// docs / security guides / cursor checklist

Cursor security checklist: 25 items before ship

Building with Cursor? Cursor's autocomplete and Agent features are exceptionally powerful — and create predictable security blind spots. This checklist targets Cursor-specific patterns: service-role key inlining, generated multi-file edits merged without review, Agent-mode terminal commands, and project rules (.cursor/rules) as your first security guardrail. 25 items across secrets, database, auth, headers, deployment, and Cursor-specific gotchas.

PRE = pre-deploy (audit your source). DEPLOY = at deploy time. POST = post-deploy verification.

रहस्य और API कुंजियाँ (5 आइटम)

Cursor के स्वत: पूर्ण को ओपन-सोर्स कोड पर प्रशिक्षित किया जाता है जहां रहस्य आम हैं। मॉडल उन्हें स्वतंत्र रूप से सुझाव देता है, विशेष रूप से असफल प्रमाणीकरण प्रयास के बाद।

  1. PRE — Write security rules into your project rules. Add a rule in .cursor/rules (Cursor docs): "Never inline SUPABASE_SERVICE_ROLE_KEY, sk_live_*, or any server secret into client-side code. Always use server-only imports." Cursor applies project rules as context for Agent and chat.
  2. PRE — Audit Composer-generated files. जब Cursor का कंपोजर एक संपूर्ण फ़ाइल बनाता है (विशेषकर ऑथ हैंडलर), तो उसकी पंक्ति-दर-पंक्ति समीक्षा करें। संगीतकार कभी-कभी ऐसे एनवी वर्र्स को इनलाइन करता है जो केवल सर्वर पर ही रहना चाहिए। घटक आयात में NEXT_PUBLIC_ या सेवा कुंजियों के प्रत्यक्ष संदर्भ देखें।
  3. PRE — Reject auto-imports of service clients into client components. यदि कंपोज़र import { supabase } from '@/lib/supabase/service' को रिएक्ट फ़ाइल में आयात करता है, तो इसे तुरंत हटा दें और इसके बजाय API एंडपॉइंट के माध्यम से रूट करें। केवल-सर्वर आयात स्पष्ट रूप से चिह्नित हैं - उन्हें छोड़ें नहीं।
  4. PRE — Scan Agent-mode commits. एजेंट मोड टर्मिनल कमांड चलाता है और सीधे प्रतिबद्ध हो सकता है। यह सुनिश्चित करने के लिए git log --oneline -20 और git diff HEAD~5 का ऑडिट करें कि एजेंट रन के दौरान कोई गुप्त दिखने वाली स्ट्रिंग प्रतिबद्ध न हो।
  5. POST — Run Secrets in JavaScript Bundles. तैनात URL पर निष्क्रिय स्कैन। यदि JS बंडल में कोई सेवा कुंजी दिखाई देती है, तो उसे तुरंत घुमाएं - Cursor के स्वत: पूर्ण होने से संभवतः यह इनलाइन हो जाएगा।

डेटाबेस अभिगम नियंत्रण (4 आइटम)

कंपोज़र अक्सर वर्किंग ऑथ कोड जेनरेट करता है लेकिन RLS को छोड़ देता है - "यह काम करता है" पल लोगों को लापता नीति प्रवर्तन के प्रति अंधा कर देता है।

  1. PRE — Make Cursor generate migrations with RLS. In your project rules: "Every CREATE TABLE public.* migration must include ALTER TABLE ... ENABLE ROW LEVEL SECURITY and a policy per command scoped to auth.uid()." Then ask Cursor to generate the migration.
  2. PRE — Review Composer-generated policies. संगीतकार कभी-कभी auth.uid() की जांच किए बिना नीतियां लिखते हैं। using खंड के बिना allow select on public.items जैसी नीतियां खतरनाक रूप से व्यापक हैं। user_id मिलान की आवश्यकता है.
  3. DEPLOY — Confirm RLS and policies are live. Open Supabase Studio and check that every table's RLS toggle is on and that each table has policies. A table with RLS on and no policies denies everything; one with USING (true) allows everyone.
  4. POST — Run a FixVibe scan on the deployed app. Check the Supabase Row-Level Security result: it shows any table an anonymous visitor can read with your public key.

प्रमाणीकरण और सत्र (4 आइटम)

Cursor तेजी से प्रमाणीकरण प्रवाह उत्पन्न करता है लेकिन अक्सर सूक्ष्म सर्वर-साइड सत्यापन छूट जाता है जो टोकन को सुरक्षित रखता है।

  1. PRE — Ensure all auth routes use getUser(). अपने API मार्गों में getSession() खोजें और await supabase.auth.getUser() से बदलें। getSession() एक असत्यापित कुकी पढ़ता है; getUser() Supabase बैकएंड के साथ मान्य होता है।
  2. PRE — Check Composer auth handlers for token expiry. मैजिक-लिंक टोकन को सर्वर-प्रवर्तन की आवश्यकता है expires_at। डिफ़ॉल्ट Supabase 1 घंटा है - Cursor को बिना किसी वास्तविक कारण के इसे ओवरराइड करने के लिए न कहें।
  3. PRE — Audit the sign-in redirect guard. साइन-इन के बाद next क्वेरी परम रीडायरेक्ट को मान्य किया जाना चाहिए: / से शुरू होना चाहिए, // से कभी नहीं। संगीतकार कभी-कभी इसे छोड़ देता है। गुम होने पर इसे मैन्युअल रूप से जोड़ें।
  4. POST — Test logout server-side state destruction. साइन इन करें, साइन आउट करें, कुकीज़ का निरीक्षण करें (DevTools → एप्लिकेशन → कुकीज़)। सत्र कुकी को तुरंत साफ़ किया जाना चाहिए. यदि यह बना रहता है, तो लॉगआउट हैंडलर स्थिति को नष्ट नहीं कर रहा है।

HTTP सुरक्षा हेडर और CSP (3 आइटम)

Cursor डिफ़ॉल्ट रूप से शायद ही कभी मिडलवेयर उत्पन्न करता है। यदि आप स्पष्ट रूप से नहीं पूछते हैं, तो CSP और HSTS आमतौर पर वहां नहीं होते हैं।

  1. PRE — Demand CSP in your project rules. Add: "Generate a src/middleware.ts with Content-Security-Policy. Use nonce for script-src, no unsafe-inline." Then ask Cursor to generate it. Without this hint, middleware is skipped.
  2. PRE — Verify src/middleware.ts exists. src/ निर्देशिका लेआउट के साथ, Next.js केवल src/middleware.ts को चुनता है। रूट-स्तर middleware.ts को चुपचाप अनदेखा कर दिया जाता है। यदि CSP लैंडिंग नहीं हो रही है, तो जांचें कि फ़ाइल सही जगह पर है।
  3. POST — Run HTTP Security Headers. निष्क्रिय स्कैन रिपोर्ट गायब हैं CSP, HSTS, एक्स-फ़्रेम-विकल्प, एक्स-सामग्री-प्रकार-विकल्प। रिपोर्ट खोलें और अपने परिनियोजन प्लेटफ़ॉर्म के लिए फ़िक्स मार्गदर्शन का पालन करें।

परिनियोजन स्वच्छता (5 आइटम)

Cursor ऐप्स अक्सर Vercel पर आते हैं, जिसमें अच्छे डिफॉल्ट होते हैं लेकिन बिल्ड/deploy सीमा के लिए स्पष्ट रूप से सख्त होने की आवश्यकता होती है।

  1. DEPLOY — Check Vercel env-var scoping. सेटिंग्स → पर्यावरण चर → ​​प्रत्येक रहस्य को केवल Proडक्शन तक ही सीमित किया जाना चाहिए। पूर्वावलोकन या विकास के साथ कभी भी sk_live_* साझा न करें।
  2. DEPLOY — Disable build-log secret echo. यदि आपके vercel.json या GitHub एक्शन वर्कफ़्लो में echo $SECRET है, तो इसे हटा दें। बिल्ड लॉग सार्वजनिक रूप से संग्रहीत हैं; लॉग में रहस्यों से समझौता किया जाता है।
  3. DEPLOY — Use Vercel's managed secrets, not inline workflow vars. Vercel की सेटिंग्स → पर्यावरण चर को बाकी समय एन्क्रिप्ट किया गया है। GitHub क्रियाओं के रहस्य कुछ भी नहीं से बेहतर हैं, लेकिन CI के लिए डिज़ाइन किए गए हैं, परिनियोजन प्लेटफ़ॉर्म एकीकरण के लिए नहीं।
  4. POST — Verify CSP nonce on the deployed preview. ब्राउज़र में Vercel पूर्वावलोकन लिंक खोलें, DevTools → Network → रूट HTML प्रतिक्रिया खोलें। CSP हेडर मौजूद होना चाहिए और प्रति अनुरोध एक अद्वितीय गैर के साथ 'strict-dynamic' शामिल होना चाहिए।
  5. POST — Rotate any key that ever shipped, even to Preview. यदि कोई कुंजी 10 मिनट के लिए भी उत्पादन बंडल तक पहुंच गई, तो यह समझौता हो गया है। तुरंत घुमाएँ.

Cursor-विशिष्ट गोचर (4 आइटम)

Cursor के वर्कफ़्लो के लिए अद्वितीय पैटर्न जो सुरक्षा जोखिम पैदा करते हैं:

  1. Agent mode auto-fixes propagate old patterns. यदि आप एजेंट से "ऑथ त्रुटियों को ठीक करने" के लिए कहते हैं, तो यह एक ही ऑथ फ़ाइल को कई बार पुन: उत्पन्न कर सकता है, यदि यह कोडबेस संदर्भ में है तो हर बार एक ही सेवा कुंजी को इनलाइन कर सकता है। पहले मूल को साफ़ करें, फिर एजेंट से ठीक करने के लिए कहें।
  2. Cursor Index leaks intent. Cursor की @codebase अनुक्रमणिका शक्तिशाली है लेकिन यदि आपकी .cursor निर्देशिका कभी उजागर होती है (गलत कॉन्फ़िगर S3, git इतिहास), तो सूचकांक आपके आर्किटेक्चर और गुप्त पैटर्न को प्रकट करता है। .cursor स्थानीय रखें.
  3. Composer mode loses context between files. कंपोजर द्वारा तैयार की गई प्रत्येक फ़ाइल ताज़ा है। यदि आप इसे क्लाइंट फ़ाइल जेनरेट करने के लिए कहते हैं, तो एक API रूट, वे अलग-अलग Supabase क्लाइंट कॉन्फ़िगरेशन का उपयोग कर सकते हैं। दोनों की समीक्षा करें और सुनिश्चित करें कि वे आपकी वास्तुकला से मेल खाते हों।
  4. Autocomplete bias toward "working" over "secure". Cursor सबसे तेज़ कोड सुझाता है जो आपके वर्तमान संदर्भ को पार करता है। यदि आपके परीक्षण में NEXT_PUBLIC_SERVICE_KEY है, तो स्वत: पूर्ण इसे याद रखता है और इसे फिर से सुझाता है। मॉडल के साथ कोड साझा करने से पहले परीक्षण फिक्स्चर को साफ करें।

अगले चरण

एक बार जब आप Cursor-विशिष्ट पैटर्न को लॉक कर लें, तो general vibe coding security checklist (51 आइटम) और फिर step-by-step hardening के विरुद्ध क्रॉस-चेक करें। यदि आप उपकरण मिश्रण कर रहे हैं तो Claude Code checklist भी देखें।

// scan your app

पढ़ना बंद करें। अपने ऐप की खामियाँ ढूँढना शुरू करें।

Drop in a URL — FixVibe runs every passive check from this guide plus the rest of its 230+ passive checks, usually in under a minute. Free, no install, no card.

  • Free टियर - 3 स्कैन/माह, कोई कार्ड नहीं।
  • किसी भी URL के विरुद्ध निष्क्रिय स्कैन - किसी डोमेन सत्यापन की आवश्यकता नहीं है।
  • Cursor, Claude Code, Lovable, Bolt, v0, रेप्लिट के लिए ट्यून किया गया।
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
मुफ़्त स्कैन चलाएँ →

साइन-अप की ज़रूरत नहीं

Cursor security checklist: 25 items before ship · FixVibe