Lovable 보안 취약점 2026: 노출된 키, RLS 누락 및 감사가 포착하는 것
Lovable 보안 취약점 2026: 노출된 키, 누락된 RLS, 그리고 감사가 찾아내는 것들
지난 3개월간 저는 Lovable에서 MVP를 구축한 후 클라이언트가 가져온 앱들을 감사했습니다. 패턴이 너무 일관성 있어서 거의 지루할 정도입니다: 클라이언트 번들에 노출된 Supabase 서비스 키, RLS 정책 부재, JavaScript에 하드코딩된 OpenAI와 Stripe 시크릿이 DevTools를 가진 누구나 가져갈 수 있게 그대로 있습니다. 매번입니다.
이것은 Lovable에 대한 비판 글이 아닙니다. 플랫폼은 프로토타이핑에 정말 인상적입니다. 다만 "작동하는 데모"와 "프로덕션 준비 애플리케이션" 사이에 협곡만큼 큰 간격이 있고, Lovable은 그 간격에 있는 대부분의 것들에 대해 말해주지 않습니다. 커뮤니티 연구자가 AI로 구축한 50개 앱을 감사했고 거의 모든 앱에서 동일한 5가지 보안 실수를 발견했습니다. 또 다른 개발자는 200개 이상의 비브 코딩된 사이트를 스캔했고 100점 중 평균 52점의 보안 점수를 발견했습니다 -- 가장 심각한 위반 사항들은 Lovable + Supabase 애플리케이션에 집중되어 있습니다.
우리가 계속 발견하는 모든 취약점, Lovable의 자체 도구가 놓치는 이유, 그리고 각각을 정확히 어떻게 수정하는지 살펴봅시다.
목차
- 문제를 만드는 아키텍처
- 취약점 1: 클라이언트 코드에 노출된 Supabase 키
- 취약점 2: 누락되거나 손상된 RLS 정책
- 취약점 3: 하드코딩된 제3자 API 시크릿
- 취약점 4: 누락된 보안 헤더
- 취약점 5: 입력 유효성 검사 또는 살균 없음
- Lovable의 기본 제공 보안 스캔이 실제로 확인하는 것
- 프로덕션 감사가 플랫폼이 놓치는 것을 찾아내는 것
- Moltbook 사건: 실제 사례 연구
- 프로덕션 전에 Lovable 앱을 수정하는 방법
- 자동화된 스캔 도구
- FAQ

문제를 만드는 아키텍처
Lovable 앱이 불균형적으로 영향을 받는 이유를 이해하려면 아키텍처를 이해해야 합니다. Lovable은 배타적으로 Supabase를 백엔드로 사용합니다. Firebase 옵션도 없고, 커스텀 백엔드도 없고, 탈출구도 없습니다. Lovable에서 뭔가를 구축할 때, 클라이언트 라이브러리를 사용하여 Supabase의 REST API와 직접 통신하는 React 프론트엔드가 생성됩니다.
Supabase는 anon 키가 공개적으로 노출되어도 안전하도록 설계되었습니다 -- 기본적으로 프로젝트 식별자입니다. 보안 모델은 전적으로 PostgreSQL 수준의 행 수준 보안(RLS) 정책에 의존합니다. 다음과 같이 생각하세요:
| 구성 요소 | 공개적으로 노출되도록 설계됨? | 무엇이 당신을 보호하는가 |
|---|---|---|
| Supabase URL | 예 | 필요 없음 -- 단지 URL일 뿐 |
anon 키 |
예 | 모든 테이블의 RLS 정책 |
service_role 키 |
절대 안 됨 | 서버 측에서만 유지되어야 함 |
| 데이터베이스 연결 문자열 | 아니오 | 클라이언트에 절대 노출 금지 |
문제는 Lovable의 AI가 이 모든 것을 동일한 방식으로 취급하는 코드를 생성하는 경우가 많다는 것입니다. 프론트엔드에 anon 키를 넣지만(괜찮음), RLS를 활성화하지 않은 테이블을 만듭니다(재앙). 때로는 클라이언트 코드에 service_role 키까지 넣기도 합니다(게임 오버). Reddit의 한 개발자가 말한 것처럼: "AI는 당신이 요청한 것을 합니다. 당신이 요청하지 않은 것은 절대 생각하지 않을 뿐입니다."
취약점 1: 클라이언트 코드에 노출된 Supabase 키
모든 Lovable 앱은 다음과 같이 Supabase 클라이언트를 초기화합니다:
// src/integrations/supabase/client.ts
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = 'https://xyzcompany.supabase.co'
const supabaseAnonKey = 'eyJhbGciOiJIUzI1NiIs...'
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
anon 키가 여기에 있는 것은 괜찮습니다 -- 의도된 설계입니다. 문제는 두 가지 형태로 나타납니다:
`service_role` 키 유출
우리는 service_role 키가 클라이언트 측 코드에 끝나는 Lovable 생성 코드를 봤습니다. 보통 누군가 "RLS가 차단하고 있는데도 이것을 작동하게 만들어"라는 식으로 AI에 프롬프트를 입력했을 때입니다. AI의 해결책? 관리자 키를 사용합니다. service_role 키는 모든 RLS 정책을 완전히 우회합니다. 프론트엔드 번들에 있으면 누구나 그것을 추출할 수 있고 전체 데이터베이스에 대한 완전한 읽기/쓰기 액세스 권한을 갖게 됩니다.
Git에 커밋된 `.env` 파일
GitHub에 배포된 Lovable 프로젝트는 리포지토리에 커밋된 .env 파일을 가지고 있는 경우가 많습니다. 리포지토리가 지금 비공개라도 한 번이라도 공개였다면 -- 잠깐이라도 -- 그 키들은 손상되었습니다. 봇들은 정확히 이 패턴을 찾기 위해 GitHub를 지속적으로 스크랩합니다.
확인 방법:
# 코드베이스에서 service_role 키 검색
grep -r "service_role" --include="*.ts" --include="*.tsx" --include="*.js" --include="*.env" .
# 실수로 커밋된 시크릿에 대한 git 히스토리 확인
git log --all -p -- '*.env'
해결 방법: 모든 클라이언트 코드에서 service_role 키를 즉시 제거합니다. Supabase 대시보드에서 키를 회전합니다(설정 → API). 키를 서버 측 코드에서만 사용합니다 -- Supabase Edge Functions, Next.js API 경로, 또는 별도의 백엔드.
취약점 2: 누락되거나 손상된 RLS 정책
이것이 핵심입니다. CVE-2025-48757은 170개 이상의 Lovable로 구축한 앱에서 303개의 취약한 엔드포인트를 노출했습니다. Escape.tech에 따르면, 노출된 Supabase 데이터베이스의 83%가 RLS 설정 오류를 포함합니다.
Lovable이 테이블을 생성할 때 기본적으로 발생하는 현상은 다음과 같습니다:
-- Lovable이 생성하는 것
CREATE TABLE user_profiles (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES auth.users(id),
full_name TEXT,
email TEXT,
created_at TIMESTAMPTZ DEFAULT now()
);
-- 무엇이 누락되었는지 보시나요? RLS가 활성화되지 않았습니다.
-- 이 테이블은 anon 키를 가진 누구나 완전히 읽을 수 있고 쓸 수 있습니다.
RLS가 없으면 Supabase 데이터베이스는 기본적으로 공개 API입니다. 프론트엔드 코드에 있는 프로젝트 URL과 anon 키를 알고 있는 누구나 다음을 할 수 있습니다:
// 공격자의 브라우저 콘솔
const { data } = await supabase.from('user_profiles').select('*')
// 모든 사용자의 데이터를 반환합니다
await supabase.from('user_profiles').delete().neq('id', '')
// 모든 것을 삭제합니다
RLS 실패의 세 가지 유형
| 실패 모드 | 발생하는 현상 | 심각도 |
|---|---|---|
| RLS가 활성화되지 않음 | 완전한 공개 읽기/쓰기 액세스 | 심각 |
| RLS가 활성화되었지만 정책이 정의되지 않음 | 아무도 아무것에도 접근할 수 없음(앱이 망함) | 높음(개발자가 RLS를 비활성화하도록 강요) |
지나치게 허용적인 정책(예: USING (true)) |
안전해 보이지만 실제로는 안 됨 | 높음 |
세 번째는 특히 음흉합니다. Lovable이 "권한을 수정해"라는 프롬프트를 받았을 때 다음과 같은 정책을 생성하는 경우를 봤습니다:
CREATE POLICY "모든 액세스 허용" ON user_profiles
FOR ALL
USING (true)
WITH CHECK (true);
이것은 RLS 극장입니다. 활성화되어 있고, 정책이 있으며, 아무것도 하지 않습니다.
적절한 정책의 모습:
-- RLS 활성화
ALTER TABLE user_profiles ENABLE ROW LEVEL SECURITY;
-- 사용자는 자신의 프로필만 읽을 수 있습니다
CREATE POLICY "사용자는 자신의 프로필을 읽습니다" ON user_profiles
FOR SELECT
USING (auth.uid() = user_id);
-- 사용자는 자신의 프로필만 업데이트할 수 있습니다
CREATE POLICY "사용자는 자신의 프로필을 업데이트합니다" ON user_profiles
FOR UPDATE
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);
-- 인증된 사용자만 삽입할 수 있고, 자신의 것만 삽입할 수 있습니다
CREATE POLICY "사용자는 자신의 프로필을 삽입합니다" ON user_profiles
FOR INSERT
WITH CHECK (auth.uid() = user_id);

취약점 3: 하드코딩된 제3자 API 시크릿
이것을 발견할 때마다 웅크립니다. OpenAI API 키(sk-...), Stripe 시크릿 키(sk_live_...), SendGrid 키 및 기타 자격증명이 React 컴포넌트에 직접 하드코딩되어 있는 것을 정기적으로 발견합니다.
// 실제로 Lovable이 생성한 파일에서 발견됨
const openai = new OpenAI({
apiKey: 'sk-proj-abc123...', // 이것은 브라우저 번들에 있습니다
})
DevTools를 열고 Sources 탭으로 가서 sk- 또는 sk_live를 검색하는 누구나 당신의 키를 얻을 수 있습니다. 공격자들은 이를 자동화합니다. JavaScript 번들을 구체적으로 스크랩하면서 이러한 패턴을 찾는 봇들이 있습니다.
재정적 영향은 실제입니다. 우리는 노출된 OpenAI 키로 인해 주말에 $4,200의 요금이 발생한 클라이언트가 우리를 찾았습니다. Stripe 시크릿 키는 더 나쁩니다 -- 환불을 처리하고, 고객 데이터를 보고, 구독을 수정할 수 있는 완전한 액세스 권한을 부여합니다.
해결책: 모든 제3자 API 호출을 서버 측 함수로 이동합니다. Supabase Edge Functions이 이에 잘 작동합니다:
// supabase/functions/openai-proxy/index.ts
import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'
serve(async (req) => {
const { prompt } = await req.json()
const response = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${Deno.env.get('OPENAI_API_KEY')}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'gpt-4o',
messages: [{ role: 'user', content: prompt }],
}),
})
return new Response(JSON.stringify(await response.json()))
})
취약점 4: 누락된 보안 헤더
200개 이상의 사이트 스캔 결과 대부분의 Lovable 배포 앱은 0개의 보안 헤더로 배포됩니다. Content-Security-Policy가 없습니다. Strict-Transport-Security가 없습니다. X-Frame-Options가 없습니다. X-Content-Type-Options가 없습니다.
이것은 노출된 데이터베이스에 비해 사소해 보일 수 있지만, 누락된 헤더는 다음을 가능하게 합니다:
- 클릭재킹 -- 악의적인 사이트의 iframe에 당신의 앱이 삽입될 수 있습니다
- XSS 증폭 -- CSP가 없으면 주입된 스크립트에는 제한이 없습니다
- MIME 타입 스니핑 공격 -- 브라우저가 파일을 실행 가능한 코드로 해석할 수 있습니다
- 다운그레이드 공격 -- HSTS가 없으면 트래픽을 가로챌 수 있습니다
| 헤더 | 목적 | Lovable 기본값 |
|---|---|---|
| Content-Security-Policy | XSS 방지, 리소스 로딩 제어 | 누락 |
| Strict-Transport-Security | HTTPS 강제 | 누락 |
| X-Frame-Options | 클릭재킹 방지 | 누락 |
| X-Content-Type-Options | MIME 스니핑 방지 | 누락 |
| Referrer-Policy | 레퍼러 정보 제어 | 누락 |
| Permissions-Policy | 브라우저 기능 제어 | 누락 |
취약점 5: 입력 유효성 검사 또는 살균 없음
Lovable이 생성한 양식은 일반적으로 사용자 입력을 유효성 검사 없이 Supabase로 직접 보냅니다. 길이 확인도 없고, 타입 검증도 없고, HTML이나 SQL 인접 콘텐츠의 살균도 없습니다.
Supabase의 PostgREST 레이어가 전통적인 SQL 주입을 방지하지만, 입력 유효성 검사의 부재는 여전히 다음을 가능하게 합니다:
- 텍스트 필드의 살균되지 않은 HTML을 통한 저장된 XSS
- 지나치게 큰 페이로드를 통한 서비스 거부
- 비즈니스 로직 악용(예: 음수 수량, $0.00 가격)
- 예상치 못한 타입으로 인한 데이터 손상
Lovable의 기본 제공 보안 스캔이 실제로 확인하는 것
Lovable은 대시보드에서 액세스할 수 있는 기본 제공 "보안 스캔" 기능을 가지고 있습니다. 공로를 인정합니다 -- 존재합니다. 하지만 이것이 실제로 다루는 것과 다루지 않는 것은 다음과 같습니다:
| 확인 항목 | 기본 제공 스캔 | 프로덕션 감사 |
|---|---|---|
| 기본 구문 오류 | ✅ | ✅ |
| 알려진 종속성 CVE | 부분적 | ✅ |
| 소스의 하드코딩된 시크릿 | ❌ | ✅ |
| 모든 테이블에서 RLS 활성화 | ❌ | ✅ |
| RLS 정책 정확성 | ❌ | ✅ |
| Service role 키 노출 | ❌ | ✅ |
| 보안 헤더 | ❌ | ✅ |
| 입력 유효성 검사 범위 | ❌ | ✅ |
| 인증 구성 검토 | ❌ | ✅ |
| 스토리지 버킷 정책 | ❌ | ✅ |
| 속도 제한 | ❌ | ✅ |
| 쿠키 보안 플래그 | ❌ | ✅ |
기본 제공 스캔은 기껏해야 표면 수준입니다. 실제로 악용되는 취약점을 잡지 못합니다.
프로덕션 감사가 플랫폼이 놓치는 것을 찾아내는 것
Lovable에서 구축한 클라이언트를 위해 프로덕션 보안 감사를 수행할 때, 일반적으로 다음을 발견하고 수정합니다. 이것은 실제 배경 관계에서의 실제 목록입니다:
데이터베이스 레이어
- RLS가 비활성화된 테이블(평균: 테이블의 60-70%)
true를 조건으로 사용하는 RLS 정책- DELETE 작업에 대한 누락된 정책(개발자가 삭제를 잊음)
- 접합/조인 테이블의 정책 누락
- 공개로 설정된 스토리지 버킷과 업로드 제한 없음
- RLS 정책 조건에서 사용되는 열의 누락된 인덱스(성능 + 보안)
인증 레이어
- 약한 JWT 시크릿(Supabase 기본값은 괜찮지만, 때때로 사람들이 변경함)
- 누락된 이메일 확인 요구사항
- 인증 엔드포인트에 속도 제한 없음
- 적절한 토큰 만료 없는 비밀번호 재설정 흐름
- OAuth 리다이렉트 URL 설정 오류
클라이언트 코드 레이어
- 프론트엔드 번들의
service_role키 - 컴포넌트에 하드코딩된 제3자 API 키
- git 히스토리에 커밋된
.env파일 - 사용자 데이터를 콘솔에 노출하는 디버그 로깅
- 데이터베이스 스키마 정보를 유출하는 오류 메시지
인프라 레이어
- 보안 헤더가 아예 없음
Secure,HttpOnly, 또는SameSite플래그 없는 쿠키- 노출된 서버 버전 정보
- CORS 구성 없음(모든 출처의 요청 수용)
- 수개월 동안 업데이트되지 않은 알려진 CVE가 있는 종속성
우리가 감사하는 일반적인 Lovable 앱은 프로덕션 준비 전에 15-25개의 수정이 필요합니다. 대부분은 각각 1시간 이내에 수정되지만, 먼저 그것들이 존재한다는 것을 알아야 합니다.
Moltbook 사건: 실제 사례 연구
2026년 1월, Wiz의 보안 연구원들은 Moltbook -- AI 소셜 네트워크 -- 이 잘못 구성된 클라이언트를 통해 전체 Supabase 데이터베이스가 노출되었음을 발견했습니다. anon 키는 프론트엔드 JavaScript에 있었습니다(정상), 하지만 중요한 테이블에서 RLS가 구성되지 않았습니다(재앙).
결과? 150만 개의 API 키가 액세스 가능했습니다. 단순 사용자 데이터가 아니었습니다 -- OpenAI, Anthropic 및 기타 계정을 자신의 계정에 연결한 사용자가 소유한 실제 API 키입니다. 모든 테이블에 완전한 읽기 및 쓰기 액세스 권한이 있습니다. 연구원은 브라우저 콘솔에서 Supabase 클라이언트를 사용하기만 해서 전체 데이터베이스를 탐색할 수 있었습니다.
공개 일정은 빡빡했습니다 -- Moltbook의 유지 관리자는 연락을 받은 후 몇 시간 내에 중요 테이블을 수정했습니다. 하지만 손상 기간은 알 수 없었습니다. 누군가가 확인하기 전에 데이터베이스가 얼마나 오래 노출되었습니까? 아무도 모릅니다.
이것은 Lovable + Supabase 패턴이 규모에 맞춰 재생되는 것입니다. 플랫폼은 작동하는 코드를 생성합니다. 안전한 코드를 생성할 뿐입니다.
프로덕션 전에 Lovable 앱을 수정하는 방법
우리가 사용하는 체크리스트입니다. SQL과 Supabase의 대시보드에 익숙하다면 대부분을 직접 할 수 있습니다:
1단계: 모든 테이블에서 RLS 감사
-- Supabase SQL 편집기에서 이것을 실행하여 RLS가 없는 테이블을 찾습니다
SELECT schemaname, tablename, rowsecurity
FROM pg_tables
WHERE schemaname = 'public';
rowsecurity가 false인 모든 테이블은 즉각적인 주의가 필요합니다.
2단계: 코드베이스에서 시크릿 검색
# 일반적인 시크릿 패턴 검색
grep -rn 'sk-' --include='*.ts' --include='*.tsx' --include='*.js' .
grep -rn 'sk_live' --include='*.ts' --include='*.tsx' --include='*.js' .
grep -rn 'service_role' --include='*.ts' --include='*.tsx' --include='*.js' .
grep -rn 'SUPABASE_SERVICE' --include='*.ts' --include='*.tsx' --include='*.env' .
3단계: 적절한 RLS 정책 작성
모든 테이블에 대해 SELECT, INSERT, UPDATE 및 DELETE에 대한 명시적 정책을 작성합니다. 항상 auth.uid() 확인을 사용합니다:
-- 사용자 소유 테이블의 템플릿
ALTER TABLE your_table ENABLE ROW LEVEL SECURITY;
CREATE POLICY "select_own" ON your_table FOR SELECT
USING (auth.uid() = user_id);
CREATE POLICY "insert_own" ON your_table FOR INSERT
WITH CHECK (auth.uid() = user_id);
CREATE POLICY "update_own" ON your_table FOR UPDATE
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);
CREATE POLICY "delete_own" ON your_table FOR DELETE
USING (auth.uid() = user_id);
4단계: API 호출을 서버 측으로 이동
시크릿 키가 필요한 모든 제3자 API 호출은 Supabase Edge Function 또는 별도의 백엔드에서 실행되어야 합니다. 이것은 협상의 여지가 없습니다.
5단계: 보안 헤더 추가
Netlify, Vercel 또는 Cloudflare에 배포하는 경우, 해당 구성을 통해 헤더를 추가합니다. Netlify의 경우, _headers 파일을 만듭니다. Next.js 앱의 경우, next.config.js에 추가합니다.
6단계: 프레임워크 마이그레이션 고려
MVP를 넘어서는 모든 것에 대해, 우리는 종종 Lovable이 생성한 React 코드를 적절한 Next.js 또는 Astro 프로젝트로 마이그레이션할 것을 권장합니다. 이것은 서버 측 API 경로, 적절한 환경 변수 처리, 인증 확인을 위한 미들웨어, 그리고 실제 빌드 파이프라인을 제공합니다. 초기에는 더 많은 작업이지만, 보안 태세는 하늘과 땅입니다.
자동화된 스캔 도구
특히 AI 생성 앱을 감사하기 위해 여러 도구가 나타났습니다:
| 도구 | 확인하는 것 | 비용 |
|---|---|---|
Ship Safe (npx ship-safe audit .) |
RLS, service_role 노출, 스토리지 버킷, 종속성 CVE | 무료, 오픈 소스 |
| Vibe App Scanner (vibeappscanner.com) | AI 구축 앱에 대한 전체 보안 스캔 | 무료 스타터 스캔 |
| Snyk | 종속성 취약점, 코드 스캔 | 무료 티어 사용 가능 |
| Supabase 대시보드 → 인증 → 정책 | 시각적 RLS 정책 편집기 | Supabase에 포함됨 |
Ship Safe는 시작하기에 좋습니다. 로컬에서 실행되고, 아무것도 당신의 머신을 떠나지 않으며, AI 도구가 만드는 Supabase 설정 오류를 위해 특별히 구축되었습니다:
npx ship-safe audit .
비활성화된 RLS, 클라이언트 코드의 service_role 키, 열린 스토리지 버킷, 약한 인증 구성, 하드코딩된 시크릿 및 종속성 CVE를 플래그로 표시합니다.
FAQ
Supabase anon 키가 프론트엔드 코드에 노출되는 것은 안전한가요?
예 -- 하지만 모든 테이블에 적절한 RLS 정책이 있어야 합니다. anon 키는 공개적이어야 하도록 설계되었습니다. 프로젝트 식별자 같은 것입니다. 보안은 RLS 정책에서 비롯되며, 해당 키가 실제로 접근할 수 있는 것을 제어합니다. RLS가 없으면, anon 키는 누구나 전체 데이터베이스에 액세스할 수 있게 합니다.
Lovable은 테이블을 만들 때 기본적으로 RLS를 활성화하나요?
아니요. 2026년 초 기준으로 Lovable은 RLS를 활성화하지 않고 Supabase 테이블을 만듭니다. 이것은 플랫폼의 가장 큰 보안 격차입니다. Lovable이 생성한 후 모든 테이블에서 RLS를 수동으로 활성화하고 정책을 작성해야 합니다. CVE-2025-48757은 이 기본 동작의 직접적인 결과였습니다.
Lovable 앱이 노출된 시크릿을 가지고 있는지 어떻게 확인하나요?
배포된 앱을 브라우저에서 열고, DevTools를 열고(F12), Sources 탭으로 가서 모든 파일에서 sk-, sk_live, service_role 및 사용하는 서비스의 API 키 접두사를 검색합니다. 또한 코드베이스에서 자동 감지를 위해 npx ship-safe audit .을 로컬로 실행합니다.
Lovable의 기본 제공 보안 스캔이 RLS 문제를 잡을 수 있나요?
기본 제공 보안 스캔은 RLS 설정 오류, 누락된 정책, 또는 노출된 service 키를 확인하지 않습니다. 기본 코드 수준의 문제는 다루지만 가장 높은 위험을 나타내는 데이터베이스 및 인프라 취약점은 놓칩니다. 실제 보안 평가를 위해서는 외부 도구가 필요합니다.
CVE-2025-48757은 뭐였나요?
CVE-2025-48757은 Lovable로 구축한 170개 이상의 앱에서 303개의 취약한 API 엔드포인트를 식별한 취약점 공개였습니다. 근본 원인은 Lovable이 RLS를 활성화하지 않고 Supabase 테이블을 만들어 공개적으로 사용 가능한 anon 키를 가진 누구나 전체 데이터베이스에 액세스할 수 있게 한 것입니다. 문제의 체계적 특성을 강조했습니다.
프로덕션 앱을 위해 Lovable에서 마이그레이션해야 하나요?
반드시 그럴 필요는 없습니다. Lovable은 빠른 프로토타이핑과 MVP 구축에 탁월합니다. 하지만 생성된 코드는 프로덕션 사용 전에 상당한 보안 강화가 필요합니다. 많은 팀이 Lovable을 사용하여 초기 버전을 구축한 다음, 적절한 프레임워크로 마이그레이션하면서 서버 측 렌더링, 적절한 시크릿 관리 및 보안 미들웨어를 추가합니다. 이것은 합리적인 접근입니다.
Lovable 앱을 프로덕션용으로 보호하는 데 얼마나 오래 걸리나요?
10-20개 테이블이 있는 일반적인 앱의 경우, 모든 RLS 정책을 감사하고, 시크릿을 서버 측으로 이동하고, 보안 헤더를 추가하고, 입력을 검증하고, 모든 것을 테스트하는 데 2-5일의 집중 작업이 필요합니다. 스토리지 버킷, 실시간 구독 및 여러 사용자 역할이 있는 더 복잡한 앱은 더 오래 걸릴 수 있습니다. 그렇지만 할 수 없는 것은 아닙니다.
Bolt나 Cursor와 같은 다른 AI 앱 빌더는 Lovable보다 안전한가요?
200개 이상의 사이트 스캔 결과 보안 취약점이 Lovable + Supabase 애플리케이션에 집중되었습니다. Bolt, Replit 및 Cursor/Cline 기반 앱은 동일한 RLS 설정 오류 패턴을 보이지 않았습니다. 그렇다고 해서 완벽하게 안전하다는 의미는 아닙니다 -- 모든 AI 생성 코드는 검토가 필요합니다 -- 하지만 Lovable 특정 Supabase 통합은 다른 도구가 가지고 있지 않은 고유한 데이터베이스 노출 취약점 클래스를 생성합니다.