Watch-IP 보안 및 API 키 관리
이 페이지는 현재 Watch-IP API에 실제로 구현된 접근 제어를 설명합니다: 두 가지 키 유형의 작동 방식, 오리진 시행 방식, 키 교체 또는 폐기 방법, 보안 문제 신고 방법입니다. 컴플라이언스 인증이나 독립적인 보안 감사를 주장하지 않습니다 — 이 글을 작성하는 시점까지 어떤 것도 완료되지 않았습니다.
두 가지 키 유형, 두 가지 다른 제어 방식
공개 가능 키(GET /v1/geo 및 POST /v1/email/validate에 사용)는 브라우저 코드에서 실행되도록 설계되었으며 비밀이 아닙니다 — 제어 수단은 요청의 Origin/Referer 헤더와 대조해 확인하는, 키에 설정된 허용 오리진 목록입니다. 시크릿 키(GET/POST /v1/lookup 및 POST /v1/risk/check에 사용)는 서버 간 통신 자격 증명으로 오리진 검사를 전혀 하지 않습니다. 백엔드 호출에는 브라우저 Origin 헤더가 없기 때문입니다 — 시크릿 키는 공개 식별자가 아니라 데이터베이스 비밀번호처럼 다루세요. 각 키 유형이 요구하는 요청 형식은 인증 문서를 참고하세요.
오리진 제한이 시행되는 방식
키의 허용 목록에 없는 오리진에서 온 공개 가능 키 요청은 Access-Control-Allow-Origin 헤더 없이 403을 받습니다. 페이지의 JavaScript가 해당 응답을 읽기 전에 브라우저가 이를 차단하는 것이 실제 시행 방식입니다 — JSON 오류 본문은 부차적입니다. 오리진 제한은 키 자체를 비밀로 만들지 않으며, 브라우저가 아닌 클라이언트가 위조된 Origin 헤더를 보내는 것을 막지도 못합니다. 이는 특히 브라우저 호출 영역을 보호하기 위한 것입니다.
전송 및 저장
API와 대시보드로의 트래픽은 전송 중 암호화(TLS/HTTPS)되며, API는 키 인증이 필요한 요청에 평문 HTTP를 허용하지 않습니다. API 키는 평문이 아닌 해시(SHA-256) 형태로 저장되므로, 데이터베이스가 유출되더라도 그것만으로는 사용 가능한 키 값이 노출되지 않습니다.
교체 및 폐기
대시보드에서 키를 폐기하거나 교체할 수 있습니다. 폐기가 모든 곳에서 즉시 반영되지는 않습니다: 키 유효성은 조회 후 최대 5분간 캐시되므로, 폐기된 키가 폐기 후에도 최대 5분간 계속 허용될 수 있습니다 — 유출이 의심될 때 얼마나 빨리 접근을 차단할 수 있는지에 이를 반영하고, 시간이 중요한 사고에서는 폐기만 믿지 말고 선제적으로 키를 교체하세요.
속도 제한
모든 키는 고정된 1분 창을 기준으로 고객 계정 단위로 속도가 제한되며, 어떤 엔드포인트를 호출하든 공유됩니다 — 라우트별 할당량이 아닙니다. 이는 유출되거나 오용된 단일 키가 짧은 시간 내에 끼칠 수 있는 피해를 제한하지만, 그 자체가 손상된 키를 교체하는 것을 대체하지는 않습니다.
보안 문제 신고하기
키가 유출되었다고 판단되거나 API나 대시보드에서 보안 문제를 발견하셨다면 security@watch-ip.com으로 이메일을 보내주세요. 현재 공개 버그 바운티 프로그램을 운영하거나 제3자 보안 인증을 보유하고 있지 않습니다 — 이 상황이 바뀌면 배지가 아니라 날짜와 함께 이 페이지에 명시하겠습니다.