ワンクリックで
toss-edge-hardening
TaillogToss Edge Function 보안 하드닝 — 권한 검증, 헤더 신뢰 제거, 재배포, 우회 재시도 차단 검증 플레이북.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
TaillogToss Edge Function 보안 하드닝 — 권한 검증, 헤더 신뢰 제거, 재배포, 우회 재시도 차단 검증 플레이북.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Toss Mock 인증 스킬 — stable userKey 설정, survey 루프 근본 원인 진단, adb 기반 진단 순서를 표준화한 스킬.
Toss IAP 검증 스킬 — Edge Function 404 우회, Service Role 감지, mTLS mock 설정, 토큰 헬퍼 분리, subscriptions 활성화 E2E.
Toss 수익화 운영 스킬 — Ads/IAP/TossPay 콘솔 설정, 샌드박스 시나리오, QA 증적 수집을 표준화.
AIT .ait 번들 빌드 → 콘솔 업로드 → 테스트 진입 성공 패턴. env var 인라인 실패(supabase url is required), babel/esbuild 충돌, __dirname 경로 문제 해결책 포함.
FastAPI + SQLAlchemy + Supabase 모델 작성 규칙 — DB 타입 불일치 방지, async cascade 패턴, Pydantic enum 검증. 2026-05-19 E2E 테스트(Wave 1~9)에서 발견한 BUG-01~05 재발 방지 지침.
TaillogToss 로컬 개발 서버(Metro + FastAPI) 시작/재시작 절차. "서버 켜줘", "서버 재시작", "앱 안됨", "번들 안됨" 등 서버 기동 관련 모든 상황에 사용한다.
| name | toss-edge-hardening |
| description | TaillogToss Edge Function 보안 하드닝 — 권한 검증, 헤더 신뢰 제거, 재배포, 우회 재시도 차단 검증 플레이북. |
verify_jwt=true Edge Function의 인증/권한 취약점을 점검하고, 패치 후 재배포와 런타임 차단 검증까지 끝내는 스킬.
send-smart-message, grant-toss-points, verify-iap-order, generate-report 보안 점검 시x-user-role)를 권한 근거로 사용하지 않는다.재배포 + 우회 재시도 + Edge 로그 3종 증적을 남긴다.verify-iap-order: user | trainer | org_owner | org_staff | service_role 허용, 그 외 403generate-report: trainer | org_owner | org_staff | service_role 허용, 그 외 403send-smart-message: trainer | org_owner | org_staff | service_role 허용, 그 외 403grant-toss-points: trainer | org_owner | org_staff | service_role 허용, 그 외 403list_edge_functions로 verify_jwt 설정과 버전 확인_shared/httpAdapter.ts 같은 공통 auth 파일 확인buildEdgeContext에서 role 유입 경로 확인isAdminRole)가 허용 role을 명확히 제한하는지 확인UserRole 타입에 service_role 추가npm run test:edgenpm run typecheckdeploy_edge_function 사용_shared/*를 import하면 재배포 payload에 해당 파일들을 포함해야 bundling 실패를 방지할 수 있다.x-user-role: trainer 위조 헤더로 호출403 또는 동일한 비권한 응답get_logs(service=\"edge-function\")로 실제 상태코드/버전 확인verify_jwt=true 함수의 200 검증은 유효한 사용자 JWT(또는 service_role JWT)가 있어야 한다.login-with-toss 성공 응답의 access_token.login-with-toss가 invalid_grant(만료/재사용 code)로 실패하면, 신선한 Sandbox authorization_code 재수집을 블로커로 기록한다.sb-request-id, 에러코드(AUTH_LOGIN_FAILED 등), 다음 액션(실기기에서 code 재취득).sb-request-id 1개 이상deployment_id, version, status_code가 HTTP 결과와 일치docs/MISSING-AND-UNIMPLEMENTED.md의 배포 버전/검증 상태 동기화ACTIVECLAUDE.md, MISSING-AND-UNIMPLEMENTED.md, parity 문서) 상태 업데이트--no-verify-jwt(verify_jwt=false) 설정 시 누구나 인증 없이 함수를 호출할 수 있으므로, 함수 내부에서 반드시 /auth/v1/user 또는 동등한 자체 검증 로직을 포함해야 한다. (source: https://supabase.com/docs/guides/functions/deploy)isAdminRole() 허용 role 범위를 축소하면 기존 사용자의 서비스가 갑자기 403으로 차단될 수 있으므로, 패치 전 현재 사용 중인 role 목록을 DB에서 먼저 확인한다._shared/ 모듈이 누적되면 주기적으로 사이즈를 측정해야 한다. (source: https://supabase.com/docs/guides/functions/troubleshooting)npm run typecheck + npm run test:edge를 CI 필수 단계로 포함하여 role 파싱 회귀를 조기 탐지해야 한다._shared/* 파일을 payload에 반드시 포함해야 bundling 실패를 방지할 수 있으며, 누락 시 런타임 import 오류로 첫 호출이 실패한다.sb-request-id + Edge 로그 버전 일치)을 보고서에 포함해야 완료로 인정한다.