데모 DB 조회·쓰기를 서버 함수로 옮기고 익명 정책 정리 #2

Open
haewonkam wants to merge 0 commits from feat/demo-writes-server-only into main
Owner

배경

브라우저가 공개 키(anon)로 테이블을 직접 읽고 쓰던 구조라, 공개 키를 가진 누구나 병원 리포트를 내려받고 빌드 대기열과 병원 입력값에 쓸 수 있었습니다.

변경

  • api/db.js: 데모 화면의 조회·쓰기를 서버 함수로 옮겼습니다. 정해진 작업 12개만 서비스 키로 실행하고, 임의 쿼리와 열 지정은 받지 않습니다.
  • api/_origin.js: 서버 함수 공용 출처 검사입니다. webforai.kr에서는 404를 돌려줍니다.
  • src/lib/db.ts: 화면용 호출 함수입니다. 반환 형태 { data, error }는 예전과 같습니다.
  • 화면 7곳의 supabase.from() 직접 호출을 db(op)로 바꿨습니다.
  • 빌드 대기열에 바로 넣던 예전 진단 신청 모달을 삭제했습니다.
  • docs/security/2026-10-07_rls_anon_lockdown.sql: 익��� 정책 15개(읽기 12, 쓰기 3)를 삭제하는 실행본입니다.

운영 반영 (2026-10-07 완료)

  • infinith-demo Vercel 환경변수 SUPABASE_SERVICE_ROLE_KEY, SUPABASE_URL 추가 (Production, Preview)
  • infinith-demo 운영 배포
  • Supabase 익명 정책 15개 삭제

검증

  • npm run lint 통과, 데모·discovery 빌드 통과 (번들 검사 포함)
  • 운영 데모 /report, /build 정상 표시, Supabase 직접 호출 0건
  • 익명 키 읽기: 15개 테이블 모두 0건, 쓰기 3곳은 RLS 거부(42501)

주의

이 PR이 병합되기 전 코드로 infinith-demo를 배포하면 데모 화면이 빈 화면이 됩니다.

🤖 Generated with Claude Code

## 배경 브라우저가 공개 키(anon)로 테이블을 직접 읽고 쓰던 구조라, 공개 키를 가진 누구나 병원 리포트를 내려받고 빌드 대기열과 병원 입력값에 쓸 수 있었습니다. ## 변경 - `api/db.js`: 데모 화면의 조회·쓰기를 서버 함수로 옮겼습니다. 정해진 작업 12개만 서비스 키로 실행하고, 임의 쿼리와 열 지정은 받지 않습니다. - `api/_origin.js`: 서버 함수 공용 출처 검사입니다. webforai.kr에서는 404를 돌려줍니다. - `src/lib/db.ts`: 화면용 호출 함수입니다. 반환 형태 `{ data, error }`는 예전과 같습니다. - 화면 7곳의 `supabase.from()` 직접 호출을 `db(op)`로 바꿨습니다. - 빌드 대기열에 바로 넣던 예전 진단 신청 모달을 삭제했습니다. - `docs/security/2026-10-07_rls_anon_lockdown.sql`: 익��� 정책 15개(읽기 12, 쓰기 3)를 삭제하는 실행본입니다. ## 운영 반영 (2026-10-07 완료) - infinith-demo Vercel 환경변수 `SUPABASE_SERVICE_ROLE_KEY`, `SUPABASE_URL` 추가 (Production, Preview) - infinith-demo 운영 배포 - Supabase 익명 정책 15개 삭제 ## 검증 - `npm run lint` 통과, 데모·discovery 빌드 통과 (번들 검사 포함) - 운영 데모 `/report`, `/build` 정상 표시, Supabase 직접 호출 0건 - 익명 키 읽기: 15개 테이블 모두 0건, 쓰기 3곳은 RLS 거부(42501) ## 주의 이 PR이 병합되기 전 코드로 infinith-demo를 배포하면 데모 화면이 빈 화면이 됩니다. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
haewonkam added 2 commits 2026-10-07 08:15:43 +00:00
브라우저가 공개 키로 테이블을 직접 읽고 쓰던 구조를 없앤다.
- api/db.js: 정해진 작업만 서비스 키로 실행 (임의 쿼리·열 지정 불가)
- api/_origin.js: 서버 함수 공용 출처 검사, 공개 배포에서는 404
- src/lib/db.ts: 화면용 호출 함수, 반환 형태 { data, error } 유지
- 빌드 큐에 바로 넣던 예전 진단 신청 모달 삭제

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merge conflict checking is in progress. Try again in few moments.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/demo-writes-server-only:feat/demo-writes-server-only
git checkout feat/demo-writes-server-only
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: castad/o2o-infinith-demo#2
No description provided.