개인정보 처리방침
본 사이트(code.205.kr, 이하 "서비스")는 비회원으로도 이용 가능하며, 회원 가입은 선택입니다. 수집하는 개인정보를 최소화하며 수집 항목·목적·보유 기간을 아래와 같이 안내합니다.
- 비회원: 식별 정보 수집 없음. 풀이 기록은 브라우저 로컬에만 저장
- 회원 가입(선택): 아이디·비밀번호 해시·출생연도(14세 검증) 필수, 이메일·표시 이름 선택
- 비밀번호는 bcrypt 해시로만 저장 (평문 미보관) — 분실 시 복구 기능 미제공
- 서버 접속 로그(IP·시각·URL)만 보안 목적으로 최대 30일 보관
- 회원 탈퇴 시 모든 데이터 즉시·영구 삭제
1. 수집하는 정보
가. 서버 접속 로그 (모든 이용자)
Nginx 웹서버의 표준 access/error 로그로 다음 정보가 자동 기록됩니다:
- 접속 IP 주소
- User-Agent 문자열 (브라우저·OS 식별 정보)
- 요청 URL 및 HTTP 메서드
- 요청 시각 및 응답 상태 코드
수집 목적: 서비스 운영 통계, 장애 진단, 비정상 트래픽·공격 탐지, 가입·로그인 시도 횟수 제한(rate-limit) 적용.
보유 기간: 최대 30일. 이후 자동으로 덮어쓰기되거나 서버 교체 시 삭제됩니다.
나. 회원 가입 시 수집
회원 가입은 선택 사항입니다. 가입을 원하는 이용자가 직접 입력한 정보만 수집합니다.
- 필수:
- 아이디 (영문·숫자·_ 3~20자)
- 비밀번호 (8자 이상, 영문 + 숫자) — bcrypt 해시로만 저장. 평문 미보관, 운영자도 조회 불가
- 출생연도 (만 14세 이상 검증용)
- 선택:
- 이메일
- 표시 이름 (화면 표시용 별칭)
- 자동 기록:
- 가입 시각
- 마지막 로그인 시각
다. 서비스 이용 중 자동 생성 (회원만)
- 풀이 기록: 정답을 통과한 문제 ID + 통과 시각
- 제출 코드: 정답 통과 시 자동 저장되는 프로젝트 데이터(JSON, 문제당 최신 1개, 100KB 이하). 프로필 페이지에서 본인만 확인 가능
- 세션 쿠키:
code205.sid— 로그인 상태 유지용.httpOnly+sameSite=lax+secure(HTTPS) + 만료 7일
라. 비회원의 브라우저 로컬 저장 (서버 전송 없음)
localStorage.entry:solved— 정답을 통과한 문제 ID 목록localStorage.entry:filter— 목록 화면의 필터 상태
이 정보는 이용자의 브라우저 내부에만 저장되며 서버로 전송되지 않습니다. 다른 기기·브라우저에서 동기화되지 않습니다.
이용자는 언제든 브라우저의 사이트 데이터 삭제 기능 또는 개발자 도구 콘솔에서 localStorage.removeItem('entry:solved')로 삭제할 수 있습니다.
마. 수집하지 않는 정보
- 이름·생년월일·연락처·주소 등 비식별 추가 정보 (출생연도 외)
- 결제 정보, 신용카드 번호
- 위치, 사진, 주소록, 마이크·카메라 데이터
- 제3자 분석 도구 (Google Analytics 등)
- 제3자 광고 추적 쿠키
2. 보유·이용 기간
| 대상 | 보유 기간 |
|---|---|
| 서버 접속 로그 | 최대 30일 |
| 회원 정보 (아이디·비밀번호 해시·출생연도·이메일·표시 이름) | 회원 탈퇴 시까지 |
| 풀이 기록·제출 코드 | 회원 정보에 종속 (회원 탈퇴 시 자동 삭제) |
| 세션 쿠키 | 최대 7일 (로그아웃·만료 시 즉시 폐기) |
3. 개인정보의 제3자 제공
수집한 정보는 외부에 제공하지 않습니다. 단, 법령에 따라 수사기관의 정당한 요청이 있는 경우 관련 절차를 따릅니다.
4. 처리 위탁
본 서비스는 Oracle Cloud Infrastructure (Always Free Tier)에서 운영됩니다. 위탁 처리는 단순한 호스팅 인프라 제공에 한하며, Oracle이 데이터 내용을 분석·활용하지 않습니다. 데이터베이스(SQLite 파일)는 본 서비스 서버 내부에만 위치합니다.
5. 정보주체의 권리
- 회원의 권리:
- 열람·정정: 프로필 페이지에서 이메일·표시 이름·비밀번호를 직접 변경 가능
- 탈퇴 (삭제): 프로필 페이지의 "계정 삭제" 영역에서 비밀번호 재확인 후 즉시 영구 삭제. 풀이 기록·제출 코드 모두 자동 정리됩니다.
- 비회원의 권리:
- 브라우저 사이트 데이터 삭제로 로컬 저장 정보 즉시 제거 가능
- 접속 로그에 포함된 본인의 IP 데이터에 대한 확인·삭제 요청은 205@205.kr로 가능
6. 보안 조치
- 전송 구간 암호화: HTTPS (TLS 1.2/1.3만 허용), HSTS 적용
- 비밀번호 보호: bcrypt 해시(cost factor 10)로만 저장. 평문 미보관, 운영자도 조회 불가
- 세션 쿠키:
httpOnly(XSS 방어) +sameSite=lax(CSRF 방어) +secure(HTTPS 전용) - 요청 빈도 제한: 로그인 시도 10회/15분, 가입 시도 5회/1시간 (IP 기준)
- 콘텐츠 보안 정책 (CSP): 외부 도메인 자원 일절 차단, inline 스크립트 차단으로 XSS 위험 최소화 (편집기 제외)
- 입력 검증: 모든 사용자 입력은 형식·길이 검증 후 매개변수화 쿼리(prepared statement)로 처리. SQL 인젝션 차단
- 서버 접근 통제: SSH 키 기반 인증, 비밀번호 인증 차단
- 불법 접근 차단: fail2ban(SSH 브루트포스 방어), 방화벽(iptables + OCI Security List)
- 보안 헤더: HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy 등 (helmet 적용)
- 탈퇴 시 자동 정리: 데이터베이스 외래키 ON DELETE CASCADE로 회원 탈퇴 시 풀이·제출 데이터 모두 즉시 삭제
7. 비밀번호 분실 시 복구
현재 본 서비스는 비밀번호 분실 시 복구 기능을 제공하지 않습니다. 비밀번호는 bcrypt 해시로만 저장되어 운영자도 평문을 알 수 없으며, 이메일 인증 절차도 도입되지 않았습니다. 분실에 대비해 안전한 곳에 비밀번호를 보관하시고, 분실 시에는 새 아이디로 가입해 주세요.
8. 아동의 개인정보
본 서비스는 만 14세 이상만 회원 가입할 수 있도록 가입 폼에서 출생연도를 검증합니다. 만 14세 미만 아동은 회원 가입 없이 비회원으로만 이용할 수 있으며, 이 경우 식별 정보가 일절 수집되지 않습니다.
만일 만 14세 미만임에도 허위 출생연도로 가입한 사실이 확인되는 경우, 운영자는 해당 계정을 즉시 삭제합니다.
9. 처리방침 변경
본 처리방침은 서비스 운영 방침 또는 법령 변경에 따라 수정될 수 있습니다. 주요 변경이 있는 경우 이 페이지 상단에 공지하며, 최신 내용은 항상 /privacy.html에서 확인할 수 있습니다.
10. 문의처
- 이메일: 205@205.kr
- 저장소: github.com/205sla/CODE-205
최초 시행일: 2026년 4월 17일
최종 개정일: 2026년 4월 26일 (회원 기능 도입)