Skip to content

[파일보안] 첨부파일 검증·스캔·저장소 분리 #49

Description

@RosieOh

🧑‍💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요

💚 어떤 기능인가요?

[ File Security ] 첨부파일 업로드 보안을 강화하고 저장소를 분리(S3 등)합니다.
MIME/크기 검증과 스캔 체계를 적용해 악성 파일 유입 리스크를 낮춥니다.

✅ To Dos

  • 업로드 허용 MIME/확장자/최대 크기 정책 정의
  • 서버측 파일 시그니처 검증 추가
  • 바이러스 스캔 연동 지점 설계
  • 외부 저장소(S3) + 서명 URL 접근 구조 구현
  • 파일 접근 권한/만료 정책 반영
  • 실패 케이스/보안 테스트 추가

Activity

  1. added theissue type on Aug 4, 2026
  2. RosieOh commented on Aug 4, 2026

    @RosieOh
    ContributorAuthor

    부분 완료 — 남은 범위만 유지합니다

    #57 에서 완료

    • 확장자·MIME·크기 검증
    • 경로 조작(path traversal) 차단
    • FileStorageService 추상화 — S3 로 교체 가능한 구조

    남은 범위 (이 이슈에서 계속)

    • 바이러스/악성코드 스캔
    • 저장소 실제 분리 (현재는 로컬 구현체, 추상화만 되어 있음)
    • 서명 URL 등 접근 통제
  3. RosieOh commented on Aug 10, 2026

    @RosieOh
    ContributorAuthor

    부분 완료 상태입니다. 검증은 되어 있고, 스캔과 저장소 분리가 남았습니다.

    이미 되어 있는 것 (LocalFileStorageService):

    • 확장자 허용 목록 (ALLOWED_EXTENSIONS)
    • Content-Type 허용 목록 (ALLOWED_CONTENT_TYPES)
    • 크기 제한 (app.storage.max-file-size-bytes, 기본 10MB)
    • 경로 조작 차단 — 디렉터리 이름에서 구분자·상위 이동 제거

    남은 것:

    • 악성코드 스캔 — ClamAV 같은 외부 스캐너 연동이 필요합니다. 자바 안에서 할 수 있는 일이 아닙니다.
    • 저장소 분리 — 지금은 애플리케이션과 같은 디스크에 저장합니다. S3 등으로 분리하려면 인프라 결정이 선행돼야 합니다.

    둘 다 코드보다 인프라·비용 결정이 먼저입니다. 그래서 열어 둡니다.

    한 가지 덧붙이면, 확장자·MIME 허용 목록은 파일 내용을 보지 않습니다. .jpg 로 이름 붙인 실행 파일은 통과합니다. 매직 넘버 검사는 스캐너 연동과 같이 하는 편이 낫습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions