Skip to content

Commit 432307d

Browse files
committed
security(docs): remove operator-only docs from public repo, redact ADR
Reverts the over-eager docs relocation. The following carried sensitive operator information and should never have entered the public deploy repo: - docs/plans/firstfluke-homepage-design.md (business reg no., physical address, plaintext ops email) - task.md (ops email, setup steps) - docs/ops/* (setup SOPs referencing plaintext ops email) - docs/qa/* (security audit referencing operator addresses) Files are preserved in the operator workspace outside this repo. ADR-0001 stays (it's the architectural decision record the team needs) but the two literal '<scrubbed-ops-email>' references in its Context and D10 narrative have been replaced with '운영자 이메일' so bots can't scrape the address. NOTE: prior commits 6b60530 and 173d27e still contain the leaked content in git history. Treat installation IDs 131094718 / 131093618 and the operator email as already-public; if rotation is required, do that as a follow-up.
1 parent 173d27e commit 432307d

8 files changed

Lines changed: 2 additions & 1312 deletions

docs/adr/0001-contact-routing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Accepted (2026-05-10)
1212

1313
사이트는 Next.js 정적 export(`out/`) 방식으로 배포되므로 `app/api/` 라우트는 런타임에 호출되지 않는다. 따라서 Cloudflare Worker를 단일 백엔드 진입점으로 채택하는 것이 기술적으로 필수이며, 이 의사결정은 다른 모든 결정의 전제가 된다.
1414

15-
보안 측면에서는 두 가지 취약점이 식별되었다. 첫째, 기존 `layout.tsx`의 Organization JSON-LD에 `our.first.fluke@gmail.com` 주소가 평문으로 박혀 있어 봇 스크래핑 표적이 되고 있었다. 둘째, 클라이언트 측에 라우팅 테이블(repo slug 등)이 노출되면 issue spam 공격 표적이 될 수 있어 서버(Worker)에만 보관해야 한다.
15+
보안 측면에서는 두 가지 취약점이 식별되었다. 첫째, 기존 `layout.tsx`의 Organization JSON-LD에 운영자 이메일 주소가 평문으로 박혀 있어 봇 스크래핑 표적이 되고 있었다. 둘째, 클라이언트 측에 라우팅 테이블(repo slug 등)이 노출되면 issue spam 공격 표적이 될 수 있어 서버(Worker)에만 보관해야 한다.
1616

1717
신뢰성 목표는 "issue가 날아오지 않는" 케이스를 0.01% 수준으로 억제하는 것이다. GitHub API 일시 장애, 네트워크 글리치, PKCS#8 변환 실수 등 운영 실패 시나리오를 고려하여 즉시 재시도 + KV dead-letter + Cron 폴링 + 24h 임계 운영자 알람 4단계 안전망을 설계하였다.
1818

@@ -142,7 +142,7 @@ Accepted (2026-05-10)
142142

143143
**Choice:** `layout.tsx`의 Organization JSON-LD에서 `email` 필드를 제거한다. `lib/site.ts`의 dead 이메일 필드도 정리한다. `/privacy` 페이지는 법규상 연락처 정보를 유지한다.
144144

145-
**Rationale:** 기존 코드는 모든 페이지 `<head>`의 JSON-LD에 `our.first.fluke@gmail.com` 평문으로 박아두어 봇 스크래핑 표적이 되었다. `schema.org` Organization 스키마에서 `email`은 선택 필드이므로 제거해도 SEO 손해가 없다.
145+
**Rationale:** 기존 코드는 모든 페이지 `<head>`의 JSON-LD에 운영자 이메일을 평문으로 박아두어 봇 스크래핑 표적이 되었다. `schema.org` Organization 스키마에서 `email`은 선택 필드이므로 제거해도 SEO 손해가 없다.
146146

147147
**Tradeoff:** 검색엔진 Knowledge Graph에서 Organization의 이메일 정보가 사라진다. Contact 폼 URL(`/#contact`)을 `contactPoint`로 대신 제공하여 이 손실을 부분 보완한다.
148148

docs/ops/cloudflare-provisioning-request.md

Lines changed: 0 additions & 50 deletions
This file was deleted.

docs/ops/github-app-setup.md

Lines changed: 0 additions & 211 deletions
This file was deleted.

docs/ops/owner-install-request-template.md

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)