|
6 | 6 | - COOKIE002: JWT token exposed in client-side cookie without security flags ([docs](https://owasp.org/www-community/controls/SecureCookieAttributes)) |
7 | 7 | - COOKIE003: Sensitive data returned in JSON response (potential token leak) |
8 | 8 | - COOKIE004: Cookie used without domain/path restrictions |
9 | | -- DEV001: Function contains TODO/FIXME comments ([docs](https://docs.ubon.dev/rules/DEV001)) |
10 | | -- DEV002: Function throws "Not implemented" or contains stub code ([docs](https://docs.ubon.dev/rules/DEV002)) |
11 | | -- DEV003: API endpoints using placeholder URLs ([docs](https://docs.ubon.dev/rules/DEV003)) |
12 | | -- DEV004: Hardcoded mock/example data in API responses ([docs](https://docs.ubon.dev/rules/DEV004)) |
13 | | -- DEV005: Function returns null or empty objects without implementation ([docs](https://docs.ubon.dev/rules/DEV005)) |
14 | 9 | - JSNET001: HTTP request without timeout/retry policy ([docs](https://developer.mozilla.org/docs/Web/API/AbortController)) |
15 | 10 | - LOG001: Potential secret logged to console/logger ([docs](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html)) |
| 11 | +- LOVABLE001: Supabase table accessed without RLS policy validation ([docs](https://supabase.com/docs/guides/auth/row-level-security)) |
| 12 | +- LOVABLE002: Supabase credentials hardcoded in source code ([docs](https://vitejs.dev/guide/env-and-mode.html)) |
| 13 | +- LOVABLE003: Anonymous authentication enabled without RLS policy validation ([docs](https://supabase.com/docs/guides/auth/auth-anonymous)) |
| 14 | +- LOVABLE004: Potential SQL injection in Supabase query - uses string interpolation ([docs](https://supabase.com/docs/reference/javascript/using-filters)) |
| 15 | +- LOVABLE005: Weak RLS policy pattern detected ([docs](https://supabase.com/docs/guides/auth/row-level-security#policies)) |
| 16 | +- LOVABLE006: Supabase storage access without proper validation ([docs](https://supabase.com/docs/guides/storage/security/access-control)) |
16 | 17 | - OSV001: Vulnerable dependency detected |
17 | 18 | - SEC001: Potential API key or secret token exposed ([docs](https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html)) |
18 | 19 | - SEC002: Supabase URL hardcoded (should use env var) |
|
33 | 34 | - SEC017: dangerouslySetInnerHTML usage (XSS risk) ([docs](https://react.dev/reference/react-dom/components/common#dangerously-setting-the-inner-html)) |
34 | 35 | - SEC018: High-entropy string literal (possible secret) ([docs](https://owasp.org/Top10/A02_2021-Cryptographic_Failures)) |
35 | 36 | - SEC019: React component injection via createElement |
| 37 | +- TAILWIND001: Dynamic className with unvalidated input - may allow CSS injection ([docs](https://tailwindcss.com/docs/content-configuration#dynamic-class-names)) |
| 38 | +- VITE001: Environment variable without VITE_ prefix may expose secrets to client ([docs](https://vitejs.dev/guide/env-and-mode.html#env-variables)) |
| 39 | +- VITE002: Development-only code without production fallback ([docs](https://vitejs.dev/guide/env-and-mode.html#modes)) |
| 40 | +- VITE003: Unsafe dynamic import with user input - potential path traversal ([docs](https://vitejs.dev/guide/features.html#dynamic-import)) |
36 | 41 |
|
37 | 42 | ### Next.js |
38 | 43 | - NEXT001: next/link used without anchor or child text (legacyBehavior) |
|
48 | 53 | - NEXT011: Environment variable leaked in client-side code ([docs](https://nextjs.org/docs/app/building-your-application/configuring/environment-variables#bundling-environment-variables-for-the-browser)) |
49 | 54 | - NEXT210: Server secret serialized to client props (leak risk) ([docs](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props#caveats)) |
50 | 55 |
|
51 | | -### Lovable / Supabase Security |
52 | | -- LOVABLE001: Supabase table access without RLS policy validation ([docs](https://supabase.com/docs/guides/auth/row-level-security)) |
53 | | -- LOVABLE002: Supabase credentials hardcoded in source code ([docs](https://vitejs.dev/guide/env-and-mode.html)) |
54 | | -- LOVABLE003: Anonymous authentication enabled without RLS policy validation ([docs](https://supabase.com/docs/guides/auth/auth-anonymous)) |
55 | | -- LOVABLE004: Potential SQL injection in Supabase query - uses string interpolation ([docs](https://supabase.com/docs/reference/javascript/using-filters)) |
56 | | -- LOVABLE005: Weak RLS policy pattern detected - may be overly permissive ([docs](https://supabase.com/docs/guides/auth/row-level-security)) |
57 | | -- LOVABLE006: Supabase storage access without proper validation ([docs](https://supabase.com/docs/guides/storage/security/access-control)) |
58 | | - |
59 | | -### Vite Security |
60 | | -- VITE001: Environment variable without VITE_ prefix may expose secrets to client ([docs](https://vitejs.dev/guide/env-and-mode.html#env-variables)) |
61 | | -- VITE002: Development-only code without production fallback ([docs](https://vitejs.dev/guide/env-and-mode.html#modes)) |
62 | | -- VITE003: Unsafe dynamic import with user input - potential path traversal ([docs](https://vitejs.dev/guide/features.html#dynamic-import)) |
63 | | - |
64 | | -### React/Tailwind Security |
65 | | -- TAILWIND001: Dynamic className with unvalidated input - may allow CSS injection ([docs](https://tailwindcss.com/docs/content-configuration#dynamic-class-names)) |
66 | | - |
67 | 56 | ### Accessibility |
68 | 57 | - A11Y001: Image without alt attribute ([docs](https://webaim.org/techniques/alttext/)) |
69 | 58 | - A11Y002: Input without label or aria-label ([docs](https://web.dev/labels-and-text-alternatives/)) |
|
109 | 98 | - GHA001: Secrets may be echoed in GitHub Actions workflow |
110 | 99 |
|
111 | 100 | ### Rails (experimental) |
112 | | -- RAILS001: SQL injection via string interpolation in ActiveRecord queries |
113 | | -- RAILS002: Unsafe shell command execution (system/backticks) |
114 | | -- RAILS003: Unsafe YAML.load() usage (code injection risk) |
115 | | -- RAILS004: Unescaped output via html_safe or raw |
116 | | -- RAILS005: Mass assignment vulnerability (missing strong params) |
117 | | - |
118 | | -### Next.js Routing/Structure (experimental) |
119 | 101 | - NEXT201: Missing 404/not-found page ([docs](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)) |
120 | 102 | - NEXT202: Missing error boundary page ([docs](https://nextjs.org/docs/app/building-your-application/routing/error-handling)) |
121 | 103 | - NEXT203: Missing _document.tsx while using next/head or next/script ([docs](https://nextjs.org/docs/pages/building-your-application/routing/custom-document)) |
|
0 commit comments