RadarURL

조회 수 3929 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
[서버운영] .htaccess와 워터마킹을 이용한 이미지 링크 방지

[원문]http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=39686&sca=&sfl=wr_subject%7C%7Cwr_content&stx=RewriteRule&sop=and




개인 계정에서 블로그등의 사이트를 운영하시는 분들 중 가끔 외부에서의 컨텐츠 직링크로 인해 트래픽 초과에 걸리시는 분들이 많습니다. 트래픽 문제가 아니더라도, 무단 링크로 인해 저작권을 침해받는 경우도 있겠죠.
이를 해결하기 위해 레퍼러비교 같은 방법도 쓰곤 하는데, 아마 .htaccess 파일을 이용한 것도 많이들 아실 겁니다.

간단히, .htaccess와 워터마킹 기술을 이용해 이미지 링크 제어를 하는 법을 소개합니다.

일단, 이미지들이 저장되는 디렉토리에 .htaccess파일을 만듭니다. (이미 존재한다면 아래의 소스를 마지막에 추가하시면 됩니다.)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !explug\.com [NC]
RewriteCond %{HTTP_REFERER} !eouia0\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteRule (.*) image.php?image=$1

...........
잠깐 설명을 하자면,

RewriteCond %{HTTP_REFERER} !explug\.com [NC]
RewriteCond %{HTTP_REFERER} !eouia0\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]

이 부분에 링크를 허용할 URL들을 기재합니다. 정규식 패턴이므로 잘 알아서.. :)
위의 예의 경우 explug.com, eouia0가 포함되는 사이트, google 등에 링크를 허용한 경우입니다. 이 경우에는 원본 이미지를 마음대로 가져다 쓸 수 있습니다.
그외의 URL에서 링크가 걸릴 경우에는

RewriteRule (.*) image.php?image=$1

에 따라, image.php?image=파일이름 으로 리다이렉트됩니다. 만약 그냥 링크 자체를 끊고 싶으시다면 여기에 아무거나 써주셔도 되지요.

이제 워터마킹 처리를 위해 image.php를 작성합니다. GD라이브러리를 사용했으므로 GD가 사용가능한 계정이어야 합니다.

<?
define ("WATERMARK", "watermark.jpg");

header("Content-type: image/jpeg");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$pic = strip_tags( $_GET['image'] );

$image_url = urldecode($pic);

if (!@fopen($image_url, "r")) {
    $dst_img = imagecreatefromjpeg(WATERMARK);
    $res = imagejpeg($dst_img, "", 100);
    die();
}

$file = pathinfo($image_url);
switch(strtoupper($file["extension"])) {
    case "JPG":
        $src_img = imagecreatefromjpeg($image_url);
        break;
    case "GIF":
        $src_img = imagecreatefromgif($image_url);
        break;
    case "PNG":
        $src_img = imagecreatefrompng($image_url);
        break;
}

$src_w = imagesx($src_img);
$src_h = imagesy($src_img);

$portion = $src_h / $src_w;
$dest_w = 300;
$dest_h = round($dest_w * $portion);

$dst_img = imagecreatetruecolor($dest_w, $dest_h);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);

$watermark = imagecreatefromjpeg(WATERMARK);

$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);

$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
imagecopy($overlay_img, $watermark, 0,0,0,0, $watermark_w, $watermark_h);
imagedestroy($watermark);

$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
imagecolortransparent($overlay_img, $white);

$offsetX = $dest_w - $watermark_w - 3;
$offsetY = $dest_h - $watermark_h - 3;

imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 100);
imagedestroy($overlay_img);

$res = imagejpeg($dst_img, "", 100);
imagedestroy($dst_img);
?>

실행예는 링크를 보시면 이해하실 수 있을 겁니다. 링크를 허용한 사이트에서는 원본이, 링크를 허용하지 않은 사이트에서는 image.php에 의해 워터마크처리된 이미지로 링크가 걸리게 됩니다. 여기에서는 예를 위해 워터마킹 처리된 이미지의 사이즈를 가로 300으로 고정시켰지만 이 부분은 적당히 소스를 고치시면 원하는 대로 적용시키실 수 있으실 겁니다.

 

출처 : http://renstyle.com/blog/category/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C?page=4

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927562
846 소프트웨어 엑셀(excel) MID, MIDB 함수를 이용해서 문자열 자르기 JaeSoo 2012.03.16 6564
845 네트워크 IEEE 802. Standard (표준) 종류 JaeSoo 2012.03.13 4850
844 네트워크 802.3, IEEE 802.3 Institute of Electrical and Electronic Engineers 802.3 이더넷 LAN 표준 file JaeSoo 2012.03.13 5041
843 논문 Springer editorial manager 에서 submission 이후 진행 방법 JaeSoo 2012.03.13 4851
842 소프트웨어 Microsoft Word(워드) 2010 각주 및 미주 삽입 또는 만들기 file JaeSoo 2012.03.13 8657
841 소프트웨어 MS Word(워드) 변경 내용 및 메모를 표시한 채 문서 인쇄 JaeSoo 2012.03.11 11266
840 소프트웨어 word 2010양식으로 저장 후 수식개체(mathtyle)수직 정렬 문제 file JaeSoo 2012.03.10 5044
839 웹 프로그래밍 .htaccess 를 이용한 이미지 핫링크 예방법 file JaeSoo 2012.03.07 5543
838 웹 프로그래밍 제로보드XE, 테터 등 설치형 홈페이지, 블로그에 워터마크 삽입하기 file JaeSoo 2012.03.07 4729
837 웹 프로그래밍 SetEnvIf 와 SetEnvIfNocase 의 차이 JaeSoo 2012.03.07 4624
836 웹 프로그래밍 XE에서 외부에서 자료를 링크거는 행위 방지 JaeSoo 2012.03.07 4520
835 웹 프로그래밍 동영상 외부 링크 금지 JaeSoo 2012.03.07 5500
834 웹 프로그래밍 .htaccess 사용해서 이미지 외부링크 막기 JaeSoo 2012.03.07 6840
» 웹 프로그래밍 아파치 리라이트(rewrite) 엔진과 워터마킹을 이용한 이미지 무단 링크 방지 JaeSoo 2012.03.07 3929
832 경제 소아 표준 성장 도표 (신체 발육 표준치 : 체중, 신장, 체질량지수, 머리둘레) file JaeSoo 2012.03.06 13053
831 보안 강제적 접근통제(MAC, Mandatory Access Control), 임의적 접근통제(DAC, Discretionary Access Control), 역할기반 접근통제(RBAC, Role Based Access Control) JaeSoo 2012.03.05 5690
830 논문 주요 국제 학술지 양식 모음 file JaeSoo 2012.03.04 8933
829 소프트웨어 내부 단편화(internal fragmentation), 외부 단편화(external fragmentation) JaeSoo 2012.03.04 6032
828 하드웨어 레이드카드 IBM ServeRAID M5015 JaeSoo 2012.03.04 5389
827 기타 게리멘더링(Gerrymandering)이란? file JaeSoo 2012.02.29 4652
Board Pagination Prev 1 ... 77 78 79 80 81 82 83 84 85 86 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너