개발 Q&A

제목 파일접근제어 관련 (이게 맞는겁니까?-_-)
글쓴이 수경 작성시각 2013/07/11 03:44:56
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 18783   RSS

사용자가 업로드한 이미지파일에 대해서 무단 접속을 차단시키려 합니다.

엄청난 양의 구글 검색을 한 결과 가장 좋은 방법은 웹브라우져가 접근할 수 없는 상위폴더에 놓는 것이라던데

이는 웹호스팅 서비스라 불가합니다. 그래서 해당 이미지 폴더는 .htaccess 로 deny from all 로 설정해놓았고

이미지를 

<img src="<?=base_url( "tools/loadImage/".$fileID )?>">

뭐 요딴식으로 불러오고 있습니다.

 

public function loadImage( $ID = "" )
 {
  if ( $ID == "" || $this->session->flashdata( $ID ) != "y" ){
   $this->load->view( "tools_0/invalidPath" );

   return false;
  }

  readfile( "./usersdata/image/".$ID );
 }



그리고 컨트롤러의 loadImage로 바로 접근할 수도 있겠단 생각에 해당 파일을 부르기 전에는

미리 session->flashdata 를 설정하여 해당 세션이 설정 안되있으면 로드가 안되도록 하였습니다.

뭐 이렇게 짜면 제 생각에는 모든 경우의 수에 대해서 무단접근을 막은 것 같기는 한데 문제가


1. 이미지로드시 시간이 엄청 걸린다;;; (페이지가 로드 된 후에도 계속 이미지를 새로 로드하는 중이므로..)

2. 간혹 사전에 세션값이 제대로 설정이 안되는지 5%정도의 확률로 이미지를 불러오지 못할 때가 있다.


다른 분들은 이런 상황이면 어떻게 처리하시는지 궁금하네요ㅠㅠ

 다음글 phpstorm 사용시 (3)
 이전글 index.php 죽이기가 안되요 ㅜㅡ (2)

댓글

변종원(웅파) / 2013/07/11 10:56:16 / 추천 0
http://reo119.blog.me/140038967524  htaccess만 이용하는 방법도 있습니다.

아무래도 부하가 덜하겠죠

네이버에서 '이미지 무단링크 방지'로 검색해보세요. 많은 로직들 나옵니다.
한대승(불의회상) / 2013/07/11 18:06:46 / 추천 0
이미지에 워터마크를 넣거나 그냥 마음을 비웁니다. ^^
수경 / 2013/07/11 21:07:40 / 추천 0

답변주셔서 너무 감사드립니다. 독학으로 배우고 있어서 제가 워낙 삽질하는건가 했는데 "그냥 마음을 비웁니다"라는 답변을 보니 저게 워낙 어려운 부분이긴 한가보네요ㅠㅠ 현업에서는 일반적으로 어떻게 저런 문제를 처리하고 있나요? (역시 웹브라우져가 접근못하는 폴더에 위치시키나요?)

P.S 아 그리고 번거로우셨을텐데 링크까지 걸어주신 웅파님께도 다시한번 감사드립니다. 공부해볼게요.

변종원(웅파) / 2013/07/11 21:41:53 / 추천 0
어려운 부분이라기 보다는 귀찮다고 보는게 맞을 겁니다.

유료 이미지여서 막아야 한다라면 모를까 굳이 신경써서 막아야 하는지 
이유가 모호할때가 있거든요.

빙산 아시죠? 겉으로 드러난 것은 얼마 안되는데 숨어있는 부피..
별 이유도 안되는데 구현하려고 했을 때 신경 써야할게 많은 그런거.. 정도. ^^;