
백엔드
간편 로그인 보안 강화 사례
두줄요약
병원 전자문진 시스템의 링크 로그인에서 정식 회원 정보가 노출되는 취약점을 발견하고 보완했습니다. 로그인 방식을 토큰 claim으로 구분해 링크 세션을 게스트처럼 제한하도록 개선했습니다.
문제 상황
- 병원 전자문진 시스템의 링크 로그인에서 전화번호 뒤 4자리만으로 정식 회원의 회원 화면과 의료 관련 정보까지 접근 가능했던 보안 취약점
- 화면과 API가 로그인 방식을 구분하지 않아 링크 세션이 게스트 수준으로 격하되지 않은 상태
원인 분석
- 링크 로그인 시 발급된 정식 회원 토큰과 일반 로그인 토큰을 동일 세션처럼 취급한 설계
- 로그인 방식 자체를 인증 정보로 저장하지 않아 프론트엔드와 백엔드에서 판별 불가
해결 방법
- Keycloak User Session Note와 protocol mapper로
login_method=linkclaim을 토큰에 포함 - 프론트엔드에서 공용 판별 유틸로 링크 세션을 식별해 제한 세션 범위를 통합 관리
- 게스트 API는 회원 세션까지 허용하되, 본인 확인과 Redis 플래그로 재검증하는 방어 구조 유지
