본문 바로가기
빌드 쇼케이스김빌더 · 2026. 6. 12.

Cursor + Next.js로 만든 가계부 앱, 배포 전인데 봐주세요

repo: github.com/example/budget AI가 정독함라이브: budget.example.com

처음 만든 SaaS입니다. 결제 붙였는데 보안이 제일 불안해서요. 코드 구조랑 보안 위주로 피드백 받고 싶습니다.

AI 1차 리뷰 · 배포 준비도0/6 안전 검증
위험결제 기능이 있다고 했지만 webhook 서명 검증, 중복 이벤트 idempotency, 가격/플랜 서버 검증 여부가 전혀 확인되지 않았다.→ 고치는 법: 결제 webhook은 서명 검증, 이벤트 idempotency 키 저장, 서버 측 price_id 검증, 사용자-구독 매핑 테스트를 함께 추가해야 한다.
위험Supabase 사용만 언급되어 있고 RLS 정책, service role key 격리, anon key 권한 범위가 확인되지 않아 인증 우회 가능성을 배제할 수 없다.→ 고치는 법: 모든 사용자 데이터 테이블에 RLS를 켜고 소유자 기반 정책과 negative test를 추가하며 service role key는 서버 전용 환경변수로만 사용해야 한다.
위험배포 전인데 라이브 URL이 제시되어 있어 실제 공개 환경에 시크릿, 디버그 로그, 테스트 결제 설정이 노출됐는지 확인이 필요하다.라이브: https://budget.example.com→ 고치는 법: 배포 환경변수와 로그를 점검하고 공개 번들에 secret/service key가 포함되지 않는지 빌드 산출물 기준으로 검사해야 한다.
위험Next.js에서 결제·인증·DB 변경 로직이 서버 경계에 있는지, 클라이언트 컴포넌트가 신뢰 입력으로 DB를 변경하는지 검증할 코드가 없다.→ 고치는 법: route handler/server action/client component 책임을 분리하고 권한 검증은 서버에서만 수행되도록 구조를 명시해야 한다.
위험가계부 앱의 빈 거래 목록, 잘못된 금액, 결제 실패/취소/중복 클릭 같은 경계 입력 처리 여부가 확인되지 않았다.→ 고치는 법: 빈 상태, 음수/0/초과 금액, 중복 제출, 결제 실패와 복구 경로에 대한 테스트와 화면 처리를 추가해야 한다.
위험작성자의 설명은 '처음 만든 SaaS'와 기술 스택 중심이며 실제 보안 보장이나 테스트 결과를 제시하지 않아 배포 판단 근거로 부족하다.처음 만든 SaaS입니다. 결제 붙였는데 보안이 제일 불안해서요.→ 고치는 법: README나 배포 체크리스트에 인증/RLS/결제/webhook/시크릿 스캔 테스트 결과를 재현 가능한 명령과 함께 기록해야 한다.
봐줬으면: 보안 · 코드구조
댓글 0
피드로