피드로 돌아가기
Dev.toSecurity
원문 읽기
Whitelist 기반 파일 필터링 및 secure_filename을 통한 경로 조작 방어 설계
Building an E2EE Chat App in Flask - Part 3: Keeping File Uploads Safe
AI 요약
Context
사용자 업로드 파일에 대한 검증 부재로 인한 Virus 유입 및 시스템 파일 덮어쓰기 위험 노출. 파일 크기 제한 및 확장자 검증 없는 무분별한 수용으로 인한 서버 가용성 저하 우려.
Technical Solution
- ALLOWED_EXTENSIONS Set 정의를 통한 Whitelist 기반의 허용 확장자 엄격 제한
- rsplit 및 lower 메서드를 활용한 파일 확장자 추출 및 대소문자 구분 없는 유효성 검증
- werkzeug.utils.secure_filename 도입을 통한 Directory Traversal 공격 및 특수문자 포함 파일명 정제
- 확장자별 분류 로직 구현을 통한 스토리지 내 논리적 저장 경로(Image/Video/File) 분리
- 사용자 입력값에 대한 Zero Trust 원칙 기반의 다단계 검증 파이프라인 구축
실천 포인트
1. 확장자 검증 시 Blacklist가 아닌 Whitelist 방식 적용 여부 확인
2. OS 파일 시스템 경로 조작 방지를 위한 Filename Sanitization 처리 여부 점검
3. MIME Type 기반의 실제 파일 콘텐츠 검증 단계 추가 검토
4. 스토리지 효율화를 위한 파일 타입별 저장 경로 분리 설계 적용