Skip to content
조회 수 34918 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

.htaccess와 워터마킹을 이용한 이미지 링크 방지


개인 계정에서 블로그등의 사이트를 운영하시는 분들 중 가끔 외부에서의 컨텐츠 직링크로 인해 트래픽 초과에 걸리시는 분들이 많습니다. 
트래픽 문제가 아니더라도, 무단 링크로 인해 저작권을 침해받는 경우도 있겠죠. 이를 해결하기 위해 레퍼러비교 같은 방법도 쓰곤 하는데, 아마 .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으로 고정시켰지만 이 부분은 적당히 소스를 고치시면 원하는 대로 적용시키실 수 있으실 겁니다.

로그인 후 댓글쓰기가 가능합니다.

?

  1. 14
    Feb 2011
    22:36

    #ifwinactive & #ifwinexist 윈도우창 마다 핫키의 용도를 다르게 사용하는 방법

    CategoryAutoHotKey Views16520
    Read More
  2. 28
    Jan 2015
    11:45

    'C:Documents.xlsx' 을(를) 찾을 수 없습니다. 라는 오류 메시지가 나오는 경우 대처방법

    CategoryExcel Views4767
    Read More
  3. 24
    Jan 2015
    11:52

    (nPDF) 프린터 인쇄 내용을 PDF 파일로 변환하기

    CategoryWindowsTip Views2273
    Read More
  4. 01
    Oct 2010
    15:12

    -응답없음- 으로 멈춰버린 프로그램 대기시간 줄이는 방법

    Category컴퓨터잡담 Views7843
    Read More
  5. 30
    Jun 2009
    15:31

    .htaccess와 워터마킹을 이용한 이미지 링크 방지

    Category컴퓨터잡담 Views34918
    Read More
  6. 11
    Jan 2013
    18:42

    100M Full 속도내기(레지스터리)

    CategoryWindowsTip Views6528
    Read More
  7. 22
    Feb 2012
    08:17

    16진수 헥사, 2진수, 10진수, 8진법 변환 계산기; Hex Calc

    Category컴퓨터잡담 Views7917
    Read More
  8. 05
    Jul 2021
    10:55

    2021년 플래시 플레이어 웹사이트 크롬에서 접속하는 방법

    Category컴퓨터잡담 Views2561
    Read More
  9. 23
    Sep 2023
    22:25

    2023-09-23 서버다운 후 복구완료

    Category컴퓨터잡담 Views39926
    Read More
  10. 29
    Mar 2010
    15:04

    50 개 이상의 Ajax 예제들

    Category컴퓨터잡담 Views18950
    Read More
  11. 29
    Mar 2010
    15:04

    50 개 이상의 Ajax 예제들

    Category컴퓨터잡담 Views18179
    Read More
  12. 22
    Feb 2016
    09:47

    8기가 램에 맞는 Mysql config 셋팅 값

    CategoryServer Views3857
    Read More
  13. 26
    Dec 2015
    01:37

    ACTIVE-X 의 무서움

    Category컴퓨터잡담 Views669
    Read More
  14. 11
    Oct 2011
    17:43

    AHK & my Address of Pointer and my Offset

    Category컴퓨터잡담 Views13183
    Read More
  15. 11
    Oct 2011
    15:45

    Ahk Standard Library Collection, 2010 Sep (+Gui) ~ Libs: 100

    Category컴퓨터잡담 Views14189
    Read More
  16. 01
    Apr 2014
    17:12

    ahk) autohotkey controlgettext 이름을 마우스커서에 졸졸 따라다니게 하기

    CategoryAutoHotKey Views12181
    Read More
  17. 30
    Oct 2013
    16:59

    ahk) autohotkey 글자 자르기 방법

    CategoryAutoHotKey Views34671
    Read More
  18. 30
    Oct 2013
    17:04

    ahk) autohotkey 엑셀(Excel)에서 행값 증가시키기

    CategoryAutoHotKey Views37413
    Read More
  19. 12
    May 2012
    17:06

    AHK) AUTOKEY 웹페이지 열지않고 소스 가져오기 또는 로그인 하기

    CategoryAutoHotKey Views52951
    Read More
  20. 26
    Dec 2011
    08:58

    Ahk) ip할당 진단프로그램

    CategoryAutoHotKey Views12119
    Read More
Board Pagination Prev 1 2 3 4 5 ... 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소