현재 PHP를 통해 jpg 이미지를 업로드 하는 예제를 받아서 구동시켜보고 있습니다.

예제 링크 : http://www.w3schools.com/php/php_file_upload.asp

이미지가 업로드되어 보관되는 폴더는 root의 uploads 라는 폴더입니다.

 

테스트 도중 오류가 나길래 원인을 찾던중에 FTP의 퍼미션 권한이 문제인것을 확인하고

이미지 파일이 업로드되어 보관되는 폴더 uploads 의 퍼미션을 777로 주었습니다.

다만 이 폴더의 존재가 노출되면 방문자들이 이 uploads 폴더에 저장된 이미지를 직접 엑세스 할 것이 우려됩니다.

 

abc.com/index.php?id=12345 를 호출하면 uploads 라는 이미지 폴더에서 이미지를 읽은후

img라는 가상 디렉토리를 만들어 abc.com/img/12345.jpg 라는 출력값을 내보내서 외부 방문자가

실제 디렉토리에 접근할수 없게끔 하는것이 목적입니다. (퍼가기 방지, IP 차단 등 여러가지 관리목적)

하지만 이 uploads 폴더에 직접 엑세스 하면 이러한 목적을 이룰 수가 없습니다.

 

웹브라우저상에서 PHP 를 실행시켜 이미지를 업로드 하면

소유자, 그룹, 기타 권한중 기타의 권한이 필요합니다.

기타의 읽기 권한을 직접 막아버리면 PHP 업로드 과정에서 오류가 납니다.

 

PHP 상에서 이미지를 업로드 할수 있게 놔두되,

유저가 브라우저 상에서 직접 uploads 폴더에 엑세스 하지 못하도록 하는 방법이 없을까요?

XE 이전버전인 Zeroboard 시절에 이런 기능이 있었던걸로 기억합니다. (첨부파일 디렉토리)

권한이 어떻게 걸린건지 FTP 상에서도 잘 삭제가 안됐었죠...

 

NGINX 에 PHP-fpm을 사용하고 있습니다.

  • profile

    직접 접근을 막고 싶은 폴더에 .htaccess 파일을 만들어서 아래 링크의 내용을 넣어보세요.

    http://pastebin.com/raw/PM9fT49a

     

    아니면 파일 이름을 아무도 짐작할 수 없는 랜덤 문자열로 바꿔버리는 방법도 있습니다.

    XE에서 첨부파일을 이렇게 처리하죠. 실제 파일명은 DB에 저장하고요.

  • profile ?
    • KSH
    • 질문기여자
    매번 도움주셔서 감사합니다!