CI 묻고 답하기

제목 이미지경로 설정 질문입니다.
카테고리 CI 2, 3
글쓴이 여드름 작성시각 2017/12/11 00:31:32
댓글 : 5 추천 : 0 스크랩 : 1 조회수 : 13492   RSS

* 이미지 경로 설정을 헤매고 있어서 도움을 얻고자 아래와 같이 현재

설정 정보와 순차적으로 처리했던 내용 기준으로 질의 드립니다.

1.현재 디렉토리 구조

/home/user/public_html/.htaccess

/home/user/public_html/index.php

/home/user/public_html/application

/home/user/public_html/system

/home/user/public_html/data   <- 이미지 경로

=> .htaccess 를 index.php 위치에 설정하였으며, 해당 경로에 이미지를 넣어둘 data 디렉토리생성

2.htaccess 설정정보

<IfModule mod_rewrite.c>   

RewriteEngine On

RewriteBase / 

RewriteCond $1 !^(index\.php|images|<strong>data</strong>|captcha|data|include|uploads|robots\.txt)

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php/$1 [L]

</IfModule>

=> data를 추가하여 index.php 하위로 data 호출시 접근 제한될수 있게 설정.

3.VIEW에서 이미지 src 설정 및 url호출

 - 이미지 호출 소스 경로 : views/event/test.php

- 이미지 호출 :  <img src="/data/test.jpg"/>

=> </strong>http://localhost/event/ 로 호출했을때,  이미지를 잘가져온다.

4.http://localhost/data/test.jpg 호출시 이미지를 불러온다!

=> .htaccess 를 설정했기 때문에,  절대경로로 이미지를 호출했을때, 이미지를 못가져와야하는거 아닌가?

     이부분을 계속 헤매고 있는것 같습니다. 이에 대한 조언 듣고 싶어서 질문드립니다.

* /public_html/data/ 경로에 두는게 아니고,

  /public_html/application/data/ 의 경로로 두는게 맞는 방향인지 헷갈리며,

* .htaccess 의 설정으로는 분명 index.php 하위 설정 디렉토리 / 확장자 / 파일 접근을 막아둔건데,

  현재 설정이 이에 부합되는게 맞는지 헷갈립니다.

* 계속 헤매고 있어서 조금의 도움을 얻고자 글을 작성해봅니다.

감사합니다.

 다음글 모바일웹 파일업로드 (1)
 이전글 세션 공유에 대해서 여쭙니다. (6)

댓글

배강민 / 2017/12/11 08:24:05 / 추천 1

Full URL로 외부에서 못가져가게 하고 싶으신건가요?

.htaccess으로 설정하는것은 특정폴더는 CI의 라우팅을 타지 않고 직접 접근이 가능하게 하기 위할 뿐입니다.

즉, 위의 설정으로는 4번을 막을 방법이 없습니다.

또한, application 안에 둔다고 해결되지도 않습니다.

브라우저가 이미지를 가져오려면 어차피 도메인을 썼던 안썼던 Full URL로 접근이 가능해야 가능합니다. 그걸 막는다면 브라우저가 어떻게 이미지를 다운로드해서 노출시킬 수 있을까요?

Full URL로 외부에서는 접근하지 못하게 하는 방법들을 찾아보시면 서버 설정등으로 좀 있긴하지만, 완벽한 완전한 방법은 없을겁니다.

어느정도 편법?정도로는 가능하지만 완전치는 않을겁니다. (이는 근래에는 알아본적이 없어서 완전한 방식이 나왔을 수도 있습니다.)

여드름 / 2017/12/11 08:56:34 / 추천 0
답변 정말 감사합니다.
.htaccess를 통해서 하위 디렉토리 접근가능하게 한다.
에 대한 개념으로 이해하고 서버자체에서는 해당 이미지를 부를수있고, 4번처럼 외부에서 강제로 호출시에는 막을수있다로 이해하고 처리하고 싶었습니다.

답변주신것처럼,
'브라우저가 이미지를 가져오려면 어차피 도메인을 썼던 안썼던 Full URL로 접근이 가능해야 가능합니다. 그걸 막는다면 브라우저가 어떻게 이미지를 다운로드해서 노출시킬 수 있을까요?`에 대한 답변으로는
서버 설정된 웹서비스 루트의 하위 디렉토리에 대한
절대 경로로 접근 가능하기에 그렇지않을시 브라우져로 요청에 대한 응답 처리는 불가할것같습니다.

그렇다면, 일단 제가 이해한 '.htaccess를 통해서 하위 디렉토리 접근가능하게 한다.'는 어디를 잘못이해했는지
지적받고싶습니다.

감사합니다.
변종원(웅파) / 2017/12/11 10:25:15 / 추천 1

지금 사용하시는 .htaccess 설정은 주소에서 index.php를 없애기 위한 것입니다.

data 디렉토리에 대해 예외처리를 하지 않으면 주소로 직접 접근이 되지 않아서 추가를 하는 것이구요.

직접 주소로 접근하지 않도록 하시려면 .htaccess에 다른 설정을 넣어주셔야 합니다.

구글에서 "아파치 htaccess 이미지 접근제어" 정도로 검색해보세요.

 

여드름 / 2017/12/11 14:02:53 / 추천 0

답변 정말 감사합니다.

" .htaccess설정은 주소에서 index.php를 없애기 위한 용도" 에 대한 개념 확실하게 숙지했습니다.

구글링을 통해 htaccess 이미지 접근제어에 대한 정보 확인결과 Files 선언을 통한 접근제어 설정이 있었습니다.

이에 대해서 테스트&검증결과 다시한번 등록 하도록 하겠습니다.

하지만, 아직도 헷갈리는 부분은 이미지 호출에 대한 부분입니다.

"아파치 htaccess 이미지 접근제어"를 설정한다면, 웹서비스 디렉토리 구조를 통해서만 호출이되고,

 " http://localhost/data/test.jpg " 이렇게 강제로 임의의 이미지를 호출할때는 접근이 제어가되는게 맞는지에

대해 헷갈립니다.

 

@배강민 님의 답변으로는 Full URL 접근이 가능해야하기 때문에 노출시킬 수 없다.

@웅파님의 답변으로는 htaccess 이미지 접근제어를 통해 제어가 가능하다.

제가 혹시 동문서답이나 틀린부분있으면 지적해주시면 고치도록하겠습니다.

변종원(웅파) / 2017/12/11 14:33:58 / 추천 0
배강민님 답변은 현재 htaccess로는 안된다(index.php 없애기 용이므로)라는 말씀입니다.