File Upload 대응방안

황인환·2024년 7월 27일

목표

서버에서 실행될 수 있는 파일을 실행되지 못하게 하는 방법

파일이름 난독화

-> 파일경로를 감추기 위한 전략
-> 조건부 대응방안
-> SQLi 취약점이 존재한다면 경로노출 가능성이 있음

경로숨기기

경로 노출이유

파일을 직접다운로드 하는 방식은 인가취약점이 발생 -> 경로 노출
ex) aaa.com/files/save/aaa.png

대응법

url 파라미터 값으로 데이터를 전송하여 경로를 추측하지 못하게함

url
aaa.com/download.php?fileid=123
fileid를 이용하여 DB를 조회하고 저장된정보를 이용
DB에는 fileid, 파일명, 파일이 저장된 경로가 있음

download.php

<?php
	user확인코드 삽입
?>

user확인코드를 사용하여 fileid를 유추해도 파일조회 불가

한계점

프로필사진은 <img src=>로 구성되어있어서 경로노출 가능성 존재

확장자 화이트리스트 기반 필터링

Null Injection을 이용하면 가능

DB에 파일을 저장

근본적인 해결방법
BLOB/CLOB이용

BLOBCLOB
정의이진 데이터를 저장하는 데 사용되는 데이터 타입대량의 문자 데이터를 저장하는 데 사용되는 데이터 타입
예시텍스트가 아닌 이미지, 오디오, 비디오 파일 등과 같은 큰 크기의 이진 데이터 파일을 저장문서, HTML 파일, XML 파일 등을 저장하는 데 적합
처리방식바이너리 데이터를 직접 처리텍스트 데이터를 직접 처리

NAS Server 이용

개별의 파일저장서버를 이용
NAS서버에는 서버에서 실행될 여지가 있는 서버측 스크립트 언어를 설치x

normaltic study 15주차

0개의 댓글