CI 묻고 답하기

제목 URL 업로드 폴더로 직접 접근을 차단 할 수 있는 방법
글쓴이 아이와사 작성시각 2016/04/18 17:42:27
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 21651   RSS

URL로 업로드 폴더경로로 직접 치고 들어왔을 때

이미지가 바로노출되지 않고

컨트롤러를 한번 타고 권한 검사를 통해 파일노출 여부를 정하고 싶습니다..

route 기능을 이용해보려고 했는데 생각처럼 안되는것같던데..

혹시 다른 방법이 있을까요?

 다음글 페이징처리 문의 (7)
 이전글 한 서버에서 CI로 웹사이트와 앱을 같이 사용할경우 (4)

댓글

육사시미 / 2016/04/18 17:45:00 / 추천 0
_remap() 메소드를 사용해 보세요.
아이와사 / 2016/04/18 19:41:42 / 추천 0

 

http://www.test.com/upload/test/test.jpg

요런식으로 치고들어와도 컨트롤러를 거치게 하려면 일단 routes 쪽에서 뭔가 작업이 필요하지않나요?

.jpg 라는 확장자가 붙어버리니까 route 쪽 설정은 안먹히는것 같더라구요.. (바로 이미지가 출력돼버립니다)

컨트롤러만 타게하면 어떻게든 처리해볼 수 있을거같은데..

말씀해주신 리맵 메소드도 일단 컨트롤러로 먼저 들어가져야 해볼수 있는방법같은데....

컨트롤러로 먼저 접근하는 방법이 따로 있을까요?

 

한대승(불의회상) / 2016/04/18 21:09:41 / 추천 0
upload 컨트롤러를 만드세요.
아이와사 / 2016/04/19 00:08:36 / 추천 0

 

업로드 컨트롤러를 만들면

http://www.test.com/upload/test/test.jpg

위와 같이 업로드되어있는 파일의 절대경로를 브라우저에 쳐서 들어올 때 업로드컨트롤러를 자동으로 실행시킬 방법이 있나요?

 

예를 들자면

http://cikorea.net/front_end/common/img/cibook.jpg

(왼쪽에 고정배너.. 도서 이미지 태그 src값입니다)

 

브라우저에 쳐서 접속했을 경우 바로 이미지가 출력되어 버리는데

컨트롤러로 이것을 권한에 따라 노출되도록 제어하는 방법이 있을까요?

컨트롤러 만드는건 문제가 아닌데 어떻게 컨트롤러를 실행시킬지가 고민입니다.

config/routes.php 정규식을 이용해서 해보려고 해도 확장자가 붙어버리니 안먹어 버리는것 같더라구요..

한대승(불의회상) / 2016/04/19 07:59:01 / 추천 0

upload => 컨트롤러 클래스

test => 컨트롤러 메소드

test.jpg =>  파라메터

이렇게 생각하면 되지 않을까요?

아이와사 / 2016/04/19 09:19:10 / 추천 0

말씀하신대로 시도해봤는데 컨트롤러로 접근하는게 아니라

파일 경로로 접근하는것 같이 보입니다.. 접근권한 퍼미션 메세지가 뜨네요

 

대신 uploads 경로앞에 index.php/ 를 붙여주면 컨트롤러로 잘 가집니다..

하지만 그건 궁극적인 해결방안이 아니기에..

 

느낌에 config에 설정되어 있는 업로드 폴더는 URL 접근시 컨트롤러를 찾는게 아니라 바로 파일절대경로로 인식하도록 어딘가 설정이 되어있을거같네요..그 부분을 찾아봐야될것같습니다..

 

으...잘못하면 파일관련 소스를 다 뒤집어 엎어야되게생겼네요ㅜㅜ..

변종원(웅파) / 2016/04/19 10:21:09 / 추천 0

정답을 제시했는데 이해를 못하시는 것 같네요. ^^;

주소에서 index.php 제거하면 원하는걸 그대로 구현할 수 있습니다.

아이와사 / 2016/04/19 10:26:46 / 추천 0

제가 궁금했던 부분은 컨트롤러를 어떻게 만드느냐가 아니라

어떻게 컨트롤러로 접근하게 만드냐였는데 제가 질문을 잘 못했나봅니다..ㅜㅜ

 

자답하자면 .htaccess 쪽을 건드려야 할것같네요..

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

위 옵션때문에 아무래 해도 컨트롤러로 접근이 안되고 해당파일이 바로 실행됐던거 같네요

이제 htaccess 쪽을 또 알아보러 가야겠네요..하 멀고도 험한

한대승(불의회상) / 2016/04/19 11:29:49 / 추천 0
@아이와사 컨트롤러를 통해서 파일에 접근 한다면 굳이 public 폴더에 업로드 폴더를 둘 필요가 있을까요?
아이와사 / 2016/04/19 11:50:56 / 추천 0
@한대승
갑작스럽게 정책이 바뀌는 바람에 기존소스에서 최대한 손이 덜가는 방향으로 생각중입니다