배경
PR #77 코드 리뷰 중 발견된 보안 이슈입니다.
요청자: @hwangtae123
관련 PR: #77
관련 코멘트: #77 (comment)
문제 내용
app/api/document.py Line 40에서 환경 변수 INTERNAL_API_TOKEN이 설정되지 않은 경우, 인증 없이 모든 요청이 통과됩니다 (fail-open).
if _INTERNAL_TOKEN and x_internal_token != _INTERNAL_TOKEN:
raise HTTPException(status_code=403, detail="forbidden")
같은 파일 _ALLOWED_STORAGE_HOSTS에는 localhost, host.docker.internal 등 내부 호스트가 포함되어 있어, 운영 환경에서 env 하나만 누락되어도 내부 파일 fetch 트리거가 외부에 노출될 수 있습니다.
수정 방향
배포 시 아래 방향으로 수정:
INTERNAL_API_TOKEN이 미설정된 경우 기본적으로 403 반환 (fail-closed)
- 로컬 개발 환경 우회는 별도
DEBUG 플래그(APP_ENV=development 등)로만 허용
_INTERNAL_TOKEN이 설정된 경우 반드시 x_internal_token과 일치해야 통과
배경
PR #77 코드 리뷰 중 발견된 보안 이슈입니다.
요청자: @hwangtae123
관련 PR: #77
관련 코멘트: #77 (comment)
문제 내용
app/api/document.pyLine 40에서 환경 변수INTERNAL_API_TOKEN이 설정되지 않은 경우, 인증 없이 모든 요청이 통과됩니다 (fail-open).같은 파일
_ALLOWED_STORAGE_HOSTS에는localhost,host.docker.internal등 내부 호스트가 포함되어 있어, 운영 환경에서 env 하나만 누락되어도 내부 파일 fetch 트리거가 외부에 노출될 수 있습니다.수정 방향
배포 시 아래 방향으로 수정:
INTERNAL_API_TOKEN이 미설정된 경우 기본적으로 403 반환 (fail-closed)DEBUG플래그(APP_ENV=development등)로만 허용_INTERNAL_TOKEN이 설정된 경우 반드시x_internal_token과 일치해야 통과