ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION1306 / 1500
보안난이도 중하5분 답변 목표 · 보강본

비밀번호 재설정 링크를 발급합니다. 토큰을 길게 무작위로 만들면 어떤 조건이 더 필요한가요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

예측 불가능성 외에 대상 사용자·용도·짧은 수명·단일 사용·안전한 전달과 로그 비노출이 필요합니다. 토큰 소유가 계정 변경 권한으로 이어지므로 발급·소비·재사용의 상태를 설계해야 합니다.

동작 원리와 전제

서버에는 토큰 원문 대신 해시를 저장하고 소비 시 만료와 미사용 조건을 원자적으로 바꿉니다. 두 요청이 동시에 같은 토큰을 쓰면 한 번만 성공해야 합니다. 재발급 때 이전 토큰을 모두 무효화할지 정책을 정합니다.

선택과 실패 처리

링크는 신뢰된 origin으로 만들고 URL 토큰이 Referer·분석 로그·외부 자산으로 새지 않게 합니다. 존재하지 않는 계정에 대한 응답과 타이밍에서 계정 열거를 줄입니다. 성공 후 기존 세션·갱신 토큰의 처리와 사용자 알림을 정합니다.

구체적인 사례와 검증

토큰의 사용 여부를 먼저 조회하고 나중에 삭제하는 두 단계는 동시 요청이 모두 통과할 수 있습니다. 미사용·미만료 조건과 계정 변경을 같은 transaction이나 원자 상태 전이로 묶습니다. 비밀번호 변경 성공 뒤 토큰만 남으면 재사용 경로가 생길 수 있으므로 실패 순서를 시험합니다. 재설정 링크가 외부 이미지·분석 스크립트를 포함한 페이지로 이어지면 URL이 로그나 Referer에 남는지 확인합니다. 사용자에게는 토큰 원문을 진단 로그로 보내라고 요구하지 않고 추적 ID로 문제를 조사합니다. 기본 인증이 강하더라도 이 복구 경로가 더 약하면 계정 보안이 그 수준으로 낮아질 수 있습니다.

동시 소비·만료 직전·재발급·잘못된 host·링크 재생·지원센터 복구를 시험합니다. 긴 토큰은 약한 이메일 계정이나 피싱 경로까지 보호하지 않으므로 위험에 맞는 재인증과 복구 정책을 함께 봅니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 예측 불가능성 외에 대상 사용자·용도·짧은 수명·단일 사용·안전한 전달과 로그 비노출이 필요합니다.
  • 선택 조건: 링크는 신뢰된 origin으로 만들고 URL 토큰이 Referer·분석 로그·외부 자산으로 새지 않게 합니다.
  • 검증 기준: 동시 소비·만료 직전·재발급·잘못된 host·링크 재생·지원센터 복구를 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 무작위 토큰이면 단일 사용·만료·동시 소비 검사는 필요 없다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 강한 인증을 우회하는 복구 경로가 생기지 않게 새 자격 등록과 사용자 확인을 어떻게 하나요?
  • 외부 링크 생성에 사용할 host를 요청 헤더 대신 어떤 신뢰된 정보로 선택하나요?
  • 자격 갱신의 정상 재시도와 탈취 재사용을 어떤 상태·키로 구분하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기