보안과 데이터 보호,
실제로 하고 있는 것만 적었습니다

출퇴근 기록과 결재 문서,
인사 정보는 회사의 민감한 기록입니다.
이 페이지는 인사책이 그 기록을 지키기 위해 실제 코드에 넣어 둔 장치를 그대로 설명하고,
아직 하지 않은 것도 아래에 함께 밝힙니다.

HTTPS 상시 암호화 회사별 데이터 분리 구조

1.
전송 구간과 저장 구간

브라우저에서 서버까지,
그리고 저장된 뒤까지의 보호 장치입니다.

모든 접속은 HTTPS

인사책의 웹과 앱은 Cloudflare 인프라 위에서 HTTPS 로 접속합니다.
브라우저와 서버 사이를 오가는 출퇴근 기록·결재 내용·로그인 정보는 전송 구간에서 암호화됩니다.

HSTS — 한 번 접속한 브라우저는 암호화 연결만 시도합니다

HTTPS 응답에는 유효기간 2년의 HSTS 헤더를 하위 도메인 포함(includeSubDomains),
preload 형식으로 내려보냅니다.
한 번 접속한 브라우저는 이후 주소를 직접 입력해도 처음부터 암호화 연결만 시도하므로,
암호화되지 않은 연결로 내려가도록 유도하는 공격의 여지를 줄입니다.

화면 끼워 넣기 차단

응답에 X-Frame-Options 헤더를 실어,
다른 사이트가 인사책 화면을 자기 페이지 안에 몰래 끼워 넣고 클릭을 가로채는 방식(클릭재킹)을 차단합니다.

AI 연동 키는 암호화해서 보관합니다

회사가 AI 비서 연동을 위해 등록한 자체 API 키(BYOK)는 평문으로 두지 않고 AES-256-GCM 방식으로 암호화해 보관합니다.
암호화할 때마다 무작위 값을 새로 만들어 쓰기 때문에 같은 키라도 저장된 모습이 매번 다릅니다.

2.
계정 보호

로그인 전후의 계정 탈취 시도에 대응하는 장치입니다.

비밀번호는 평문으로 저장하지 않습니다

비밀번호는 계정마다 새로 만든 무작위 솔트를 더한 해시로만 저장합니다.
원문 비밀번호는 저장소 어디에도 남지 않으며,
저장된 해시에서 원문을 되돌릴 수 없습니다.
인증값을 비교할 때는 타이밍 안전 비교를 사용해,
비교에 걸리는 시간 차이로 값을 한 글자씩 유추하는 공격을 어렵게 합니다.

세션 쿠키의 기본기

로그인 세션 쿠키에는 HttpOnly 와 SameSite=Lax 속성을 적용하고,
HTTPS 접속에는 Secure 속성을 더합니다.
화면 안의 스크립트가 쿠키를 읽을 수 없고,
다른 사이트에서 시작된 요청에 세션이 함부로 실려 가지 않습니다.

서명된 세션과 일괄 무효화

관리자 세션 쿠키는 HMAC-SHA256 방식으로 서명하고,
서명이 맞지 않는 값은 거부합니다.
계정 이상이 의심될 때는 그 관리자의 세션을 발급 시점 기준으로 일괄 무효화할 수 있습니다.

직원 앱 토큰 — 30일 회전과 계보 폐기

직원 앱의 자동 로그인 토큰도 서버 서명을 검증한 뒤에만 인정합니다.
토큰은 30일이 지나면 새 토큰으로 회전하고,
토큰이 유출된 정황이 보이면 그 토큰에서 파생된 계보 전체를 한 번에 폐기해 오래된 사본이 다시 살아나지 못하게 합니다.

로그인 시도 제한과 계정 잠금

로그인과 가입 요청에는 횟수 제한을 두고,
같은 계정에 로그인 실패가 반복되면 일정 시간 그 계정을 잠급니다.
무차별 대입으로 비밀번호를 맞혀 보려는 시도를 느리게 만드는 장치입니다.

3.
데이터 분리와 권한

한 회사의 데이터가 다른 회사 화면에 나타나지 않게 하는 구조입니다.

회사별 데이터 분리 구조

인사책은 회사 데이터를 회사 단위로 분리해 다루는 구조로 운영합니다.
모든 데이터 접근은 단일 진입 라우터를 지나며,
서명 검증을 통과해 확정된 회사 식별값이 있어야만 그 회사의 데이터에 닿을 수 있습니다.
주소나 요청 파라미터에 적힌 회사 번호 같은 검증 안 된 입력은 회사 판정에 쓰지 않습니다.

모호하면 열지 않습니다

어느 회사의 요청인지 확정하지 못한 접근은 다른 저장소로 넘겨 처리하지 않고 그 자리에서 거부합니다.
편의를 위해 모호한 요청을 통과시키는 것보다,
잘못된 화면에 남의 데이터가 뜨지 않는 쪽을 택했습니다.

변경 API 권한 검사를 자동 감사합니다

데이터를 만들고 고치고 지우는 API 경로의 권한 검사는 사람이 눈으로 훑는 대신 자동 감사 체계가 봅니다.
권한 검사 없이 추가된 변경 API 는 매번 도는 테스트가 잡아내므로,
실수로 검사가 빠진 채 배포되는 것을 막는 그물이 됩니다.

4.
개인정보

무엇을 수집하고 언제까지 보관하는지는 처리방침이 정본입니다.

개인정보처리방침에 수집하는 항목,
수집 목적,
보유 기간,
처리 위탁,
이용자의 권리를 공개하고 있습니다.
방침이 바뀌면 개정 이력과 함께 같은 페이지에 공지합니다.
이 보안 페이지의 설명과 처리방침이 다르게 읽힌다면 처리방침이 정본입니다.

한눈에 보기 — 축별 보호 장치

지금 하고 있는 것
전송·저장 HTTPS 상시 · HSTS 2년(하위 도메인 포함,
preload) · X-Frame-Options · AI 연동 키 AES-256-GCM 암호화 보관
계정 보호 무작위 솔트 해시 저장 · 타이밍 안전 비교 · 세션 쿠키 HttpOnly·SameSite=Lax·Secure · HMAC-SHA256 서명 · 세션 일괄 무효화 · 토큰 30일 회전·계보 폐기 · 로그인 횟수 제한·계정 잠금
데이터 분리 회사별 데이터 분리 구조 · 검증된 회사 식별값으로만 접근 · 모호한 요청은 거부 · 변경 API 권한 자동 감사
개인정보 처리방침에 수집 항목·보유 기간·위탁·이용자 권리 공개 · 개정 이력 공지

지금 하고 있지 않은 것

보안 페이지는 부풀리기 쉬운 자리라서,
하지 않는 것도 같이 적습니다.

외부 인증 심사는 아직 받지 않았습니다. 위에 적은 장치들은 저희 코드에 실제로 있는 그대로이지만,
외부 기관의 정보보호 인증 심사를 통과했다고는 말하지 않습니다.
받지 않은 것을 받은 것처럼 쓰는 순간 이 페이지 전체를 믿을 수 없게 된다고 생각합니다.

Content-Security-Policy 헤더는 아직 적용하지 않았습니다. 스크립트 실행 출처를 브라우저 단에서 한 번 더 제한하는 두 번째 그물인데,
현재 도입을 준비하고 있습니다.
적용되면 이 페이지에 반영하겠습니다.

완벽한 보안을 약속하는 문장은 이 페이지에 없습니다.
대신 무엇을 하고 있는지,
무엇을 아직 못 하고 있는지를 계속 사실대로 갱신하겠습니다.
보안에 관한 문의는 문의하기로 보내주세요.

인원 제한 없는 무료 플랜으로 시작해 보세요.
회사 데이터는 위에 적은 구조 그대로 다뤄집니다.

무료로 시작