보안·데이터 정책
실제로 구현된 조치만 적어요. 계획 중이거나 준비 중인 항목은 여기 올리지 않아요.
계정 보호
- 비밀번호는 bcrypt로 해시해 저장해요(평문·역가역 저장 없음)
- 흔히 쓰이는 비밀번호는 가입 시점에 걸러서 아예 등록되지 않게 해요
- 로그인 5회 연속 실패 시 15분 동안 계정을 잠가요
- 이메일 인증은 6자리 코드(10분 만료, 5회 틀리면 재발급 필요)로 확인해요
- 비밀번호 재설정은 1시간 만료 일회용 링크로만 처리해요
- 비밀번호를 바꾸거나 재설정하면 그 계정으로 로그인돼 있던 다른 모든 기기의 세션이 즉시 무효화돼요
세션·전송 보안
- 세션 쿠키는 HttpOnly·SameSite=Lax이고, 배포 환경에서는 Secure 속성도 적용돼요
- 로그인 유지 시 세션은 14일간 유지돼요
- 모든 요청은 요청 위조 방지 토큰(CSRF)으로 검증해요
- 모든 응답에 보안 헤더(Content-Security-Policy·X-Frame-Options·X-Content-Type-Options 등)를 적용해요
관리자 접근 통제
- 관리자 권한이 있는 계정으로 새로운 IP에서 로그인하면 운영자에게 즉시 알림이 가요
- 계정 권한 변경 같은 관리자 조작은 누가·언제·무엇을 바꿨는지 전부 감사 기록으로 남아요
요청 빈도 제한
회원가입·로그인·비밀번호 재설정, 문장→조건 변환, 엑셀 다운로드 요청에는 분당 호출 횟수 제한을 적용해요.
개인정보 보호
- 회원 탈퇴 시 계정은 즉시 이용 불가 상태로 전환되고, 법령상 보관 의무가 있는 기록만 분리 보관 후 기간 경과 시 파기해요
- 이용약관·개인정보처리방침 동의 이력을 계정별로 남겨요
- 다운로드 정책 위반 감지를 위해 남기는 접속 로그의 IP 주소는 마스킹(IPv4 /24, IPv6 /64)해서 보관해요 — 어떤 사람인지 특정할 수 없는 형태로만 남아요
백업·복원
- 데이터베이스와 데이터 스냅샷을 매일 1회 백업해요
- 백업 파일은 저장하기 전에 대칭키로 암호화해요 — 키 없이는 복원 자체가 불가능해요
- 백업 파일은 서비스 서버 밖의 별도 저장소에도 올려요 — 서버 저장 장치가 고장 나도 백업은 남아요
- 백업→삭제→복원 절차는 자동화 테스트로 매번 검증하고, 실제 운영 데이터로도 복원 리허설을 수행했어요
장애·침해사고 대응
- 처리되지 않은 예외가 발생하면 운영자에게 즉시 알림이 가요
- 데이터베이스에 남기는 운영 기록은 90일간 보관 후 자동 삭제돼요 — 매일 도는 정리 작업이 실제로 지워요
- 서버에 쌓이는 로그 파일은 새 버전을 배포할 때 서버와 함께 사라져요. 그래서 90일보다 일찍 없어질 수 있어요
- 의존성 취약점 점검(pip-audit)을 매주 자동으로 실행하고, 심각한 취약점이 발견되면 즉시 알림이 가요
- 개인정보 유출이 의심될 때의 대응 절차(경로 차단 → 영향 범위 파악 → 72시간 내 신고·이용자 통지 → 재발 방지)를 운영 문서로 미리 마련해 뒀어요
데이터 출처
재무 데이터는 금융감독원 전자공시시스템(DART)에 제출된 공시 자료를 기반으로 해요. Peer 후보의 사업 근거는 DART 공시, 회사 공식 웹사이트 설명, 웹 검색으로 보강한 설명을 서로 구분해 표시해요. 공시 문서 전체를 그대로 재배포하지 않고, 확인할 수 있는 원문 링크·접수번호·자료 기준일을 함께 보여드려요. 확보하지 못한 근거와 숫자는 추정해서 채우지 않고 미확보로 표시해요.
알려진 한계
요청 빈도 제한은 서버 프로세스 메모리에 저장돼요. 지금은 단일 프로세스로 운영해 문제없지만, 여러 서버 인스턴스로 확장하면 공유 저장소(Redis 등)로 옮겨야 실제로 유효해요.
취약점 제보
보안 취약점을 발견하셨다면 hello@dartdot.kr로 알려주세요. 표준 위치인 /.well-known/security.txt에도 같은 연락처가 안내돼 있어요.
문의
그 밖의 보안 관련 문의는 hello@dartdot.kr로 보내 주세요.