작성
·
113
0
복습하던 도중에 practice_upload3 문제에서 질문이 있습니다.
우선 문제는 파일 다운로드 취약점을 이용해서 풀긴 했는데
uploadaction.php에서는 업로드 되는 파일의 경로가
inc/common.php로부터 filePath + gb + uploadFile을 가져왔는데
download.php 에서는 파일을 가져오는 경로가
filePath + fileName으로 되어서 attach/contact/<파일> 이 되지만
uploadaction.php에서는 gb값이 왜 추가가 되나요??
다운로드 되는 경로가 결과적으로 실제 파일이 위치한 경로라는 것은 이해가 되지만
업로드 되는 소스코드는 왜 다운로드와 다른지 이해가 잘 안 가네요!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
무무님의 질문에 대해 설명드리겠습니다.
파일 업로드와 다운로드 기능에서 경로가 다르게 설정된 것은 보안과 관련된 실무적 이유일 수 있습니다. uploadaction.php
에서 파일 업로드 시 gb
값을 경로에 추가하는 것은 파일이 저장되는 구조에 논리적인 구분을 주어 다른 사용자의 파일과 충돌을 방지하거나 가변적인 저장 구조를 통해 보안을 강화하는 방식일 수 있습니다. 예를 들어, 사용자별 또는 세션별로 별도의 경로를 할당하여 업로드되는 파일들을 분리하는 것입니다.
반면, download.php
에서 파일을 다운로드할 때는 실제 파일이 저장된 경로(filePath + fileName
)만 사용하는 것은 사용자가 요청하는 파일에 바로 접근할 수 있도록 하기 위함입니다. 파일 다운로드 기능에서는 파일의 물리적 위치를 기반으로 사용자에게 파일을 제공하는 것이 일반적이기 때문입니다.
이러한 차이는 보안 상의 이유, 파일 관리의 편의성, 또는 시스템 설계 상의 결정 등 다양한 이유로 설계될 수 있습니다. 경우에 따라서는 서버 내부에서의 파일 관리와 사용자에게 보여지는 파일의 접근 경로를 분리하여 보안을 강화하는 목적으로 구성될 수도 있습니다.
제공된 이미지 주소로는 구체적인 코드 구현의 내용을 파악하기 어렵지만, 일반적으로 경로 설정의 차이는 이러한 이유에서 비롯될 수 있습니다.
이미지 주소:
- 첫 번째 이미지:
- 두 번째 이미지:
- 세 번째 이미지: