Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

IT공부방 (정보보안)

모의해킹 취업반 스터디 9기 16주차 (1) 파일 업로드/ 다운로드 대응방안 본문

정보보안 공부/모의해킹 스터디 9기

모의해킹 취업반 스터디 9기 16주차 (1) 파일 업로드/ 다운로드 대응방안

mister jeon 2026. 2. 3. 22:17

< 16주차  > 

이전 주차까지 실습을 진행하면서 파일 업로드와

다운로드의 취약점에 대해 알아보았습니다. 

이제 두 가지의 대응방안에 대해 알아보겠습니다.

파일 업로드의 근본적인 원인은 서버가 파일을

제대로 검증하지 않고 아무 파일을 올리는게 문제가 되며

그리고 웹 서버 측 파일 실행을 막기 위해서는

3가지 대응방안이 있습니다.

 

> 파일 서버 분리 !! 가장 중요 리소스 파일을 따로 관리 필요

> DB에 파일을 저장

> 파일 이름을 분리 (DB 자장) / 파일 이름 변경 (확장자 제거)

 

서버 측에서 실행 될 수 없는 파일 서버에 저장하여

분리를 하게 된다면 서버 측이 실행되는 파일을 막을 수 있습니다.

두번 째 대응방안인  DB에 파일을 저장하는 방법입니다.

주로 BLOB, CLOB라고 하는데 BLOB는 이미지나,

비디오, 사운드 파일 등과 같이 데이터 형식으로

저장하여 사용됩니다. CLOB는 문자열 형식의 큰 데이터를

저장하는데 사용되며 일반적으로 텍스트 데이터로 저장합니다.

마지막 대응방안은 파일 이름을 분리 (DB 자장) /

파일 이름 변경 (확장자 제거) 방식 입니다. 이 방식은

파일 이름을 분리하여 DB 자장는데 파일이름을

랜덤한 난수값으로 저장하게 합니다.

EX) Hello.php >> DB 저장 >> fjgFGKxfv148ghjh

이렇게 저장하고 파일을 다운로드를 받을 때 \

fjgFGKxfv148ghjh 경로에서 Hello.php 가져오게

되는 것 입니다.

 

다음은 파일다운로드 대응방안 입니다.

> DB에 파일 업로드 경로를 저장하고 파일 번호1 > 위험성 있음

 

DB에 파일 업로드 경로를 저장하고 파일 번호를 지정하여 

파일 다운로드 시 file.php 이런 식이 아닌 파일 번호를

download?file=1 이런식으로 받아 다른 파일을 받을

수 없게 만드는 것 입니다. 하지만 위험성이 있습니다.

 

* 위험성

파일 업로드 경로에  ../../../../../etc/passwd 

저장하게 된다면 실제로 ../../../../../etc/passwd

경로에 있는 파일이 다운로드 되는 경우가 있습니다.

두번째 위험성은 해당 서버에 SQL Injection이 일어날 경우

파일 업로드 경로를 가져오는 방법이 있습니다.

이런 위험성 때문에 파일 업로드 했던 방식처럼

 파일 서버 분리하는 방법이나 DB에 파일을

저장하는 방법을 이용해야 되겠습니다.

즉 웹 서버에 파일을 저장하고 관리하는 것은 위험하니 

이런 리소스 파일은 따로 관리하는 것이 안전합니다.