요청: cycle-히스토리-기록선언-v2계속
- 날짜: 2026-05-27 12:50:59
- 작업 경로: /Users/ef/crowny-cycle
요청 본문
히스토리를 기록/선언하고 계속 해보자. (작업 흐름: cycle v1 구축 → 시뮬 → 보안 점검 → GUI 강화 → v1.5 통합. v2 보안 마일스톤 진입.)
관련 산출
(클로드가 작업 결과를 이어 기록)
산출
v1.6 — 인증 강화 (히스토리 기록 + 보안 픽스)
1) /history 페이지 (선언적 버전 히스토리)
사이클서버.한선에페이지_히스토리() + /history 라우트 추가. nav에 "히스토리" 추가.선언된 마일스톤:
- v0 (2026-05-22) — 가치 만들기 코어 11모듈, 임계실현율 공식 발견
- v1 (2026-05-27) — cycle 사용자 서비스, 9페이지 + 9API, 한선씨 함정 발견
- v1.5 (2026-05-27) — Haiku 보안 점검, HTML이스케이프, GUI 차트/게이지, /ecosystem
- v1.6 (2026-05-27, 현재) — 세션 토큰, Rate Limit, chmod 600
- v2 (계획) — POST + HTTPS + CSRF + 데이터 연동 + gateway 매핑
2) 세션 토큰 시스템
- 글로벌 append-only 배열: 세션토큰목록 / 세션아이디목록 / 세션만료목록
세션생성(id)→ 해시_SHA256(id + 시간 + 순번) 발급, 만료 3600초세션찾기(token)/세션아이디(token)— 역방향 스캔, 만료 자동 거부- 새 엔드포인트:
/api/check-session?token=<> - 변경 API 3개(
/api/register/tether/api/register/binance/api/params)에 토큰 강제 — 토큰 무효 시토큰_무효_로그인필요 - 토큰의 id가 우선 — 쿼리의 id 인자는 무시 (id 도용 차단)
3) Rate Limit
- 글로벌 append-only: 시도아이디목록 / 시도시각목록
시도카운트(id)— 최근 시도제한초(=300) 이내 동일 id 시도 횟수/api/login진입 시 시도수 ≥ 시도제한건수(=5)면 즉시 거부 +recent반환- 5회 누적 후 차단 (성공/실패 모두 카운트)
검증 결과 (10단계)
| # | 시나리오 | 결과 |
|---|---|---|
| 1 | 가입 alice | {"ok":true,"msg":"성공"} |
| 2 | 토큰 없이 /tether | {"ok":false,"msg":"토큰_무효_로그인필요"} ✓ |
| 3 | 로그인 → 토큰 발급 | token (SHA256 64자 hex), expires_in=3600 ✓ |
| 4 | /check-session | {"ok":true,"id":"alice"} ✓ |
| 5 | 토큰으로 /tether | 테더_등록완료_1234 ✓ |
| 6 | 토큰으로 /binance | 바이낸스_등록완료 ✓ |
| 7 | 토큰으로 /params | 파라미터_저장완료 ✓ |
| 8 | 잘못된 토큰 /params | 거부 ✓ |
| 9 | Rate limit 6회 잘못된 로그인 | 5회째에 차단 (recent:5) ✓ |
| 10 | /history /ecosystem | v1.6/v2 마일스톤·도메인 인덱스 노출 ✓ |
관련 파일
/Users/ef/crowny-cycle/사이클서버.한선(1070+줄, v1.6)/Users/ef/CrownyDoc/projects/2026-05-27-요청-cycle-MEMORY공유-...md(v1.5 산출)
v2 잔여 (계획 페이지에 선언됨)
- POST + HTTPS (현재 GET 평문)
- CSRF 토큰
- 폼 페이지에 토큰 자동 처리 (현재 API만 토큰 강제, 폼은 별도 흐름)
- cycle:9897 ↔ value:9879 데이터 연동
- gateway 매핑 cycle.crowny.org 도메인 활성화
- 실 바이낸스 읽기전용 + 실 Claude API 결제