← 목록
기타 2026-05-27 3KB 읽기 3분

요청: 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 매핑
보안 등급 추이: D → D+ → C (주의) → B (목표)

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거부 ✓
9Rate limit 6회 잘못된 로그인5회째에 차단 (recent:5) ✓
10/history /ecosystemv1.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 결제