RadarURL
Skip to content
2011.09.22 23:14

외부 링크 방지

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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

<VirtualHost *:80>
    DocumentRoot ...
    ServerName sir.co.kr
    ServerAlias www.sir.co.kr wwww.sir.co.kr ww.sir.co.kr
    #  외부링크방지
    SetEnvIfNoCase Referer sir.co.kr link_allow
    SetEnvIfNoCase Referer www.sir.co.kr link_allow
    SetEnvIfNoCase Referer ^$ link_allow
    <FilesMatch
".(jpe?g|gif|png|bmp|avi|swf|mpe?g|zip|z[00-99]|rar|mp[1-9]|arj|exe|asf|wm[a-z]*|ra[a-z]*|alz|ZIP|Z[00-99])$">
        Order Deny,Allow
        Allow from env=link_allow
        Deny from all
    </FilesMatch>
</VirtualHost>

 

출처 : http://blog.ohmynews.com/hjlee222/185568

?

  1. No Image 02May
    by JAESOO
    2016/05/02 by JAESOO
    Views 270 

    아파치 httpd.conf 재시작 없이 설정 적용하기

  2. No Image 01Jan
    by JAESOO
    2016/01/01 by JAESOO
    Views 338 

    톰캣 8 소개

  3. No Image 22Dec
    by JAESOO
    2014/12/22 by JAESOO
    Views 544 

    리눅스 아파치 로그 뷰어 webalizer, utf-8로 변환하기

  4. No Image 22Dec
    by JAESOO
    2014/12/22 by JAESOO
    Views 803 

    Webalizer Configuration – Configure Webalizer for SEO

  5. No Image 22Dec
    by JAESOO
    2014/12/22 by JAESOO
    Views 440 

    Webalizer, AWStats에서 국가 정보 확인하기

  6. No Image 22Dec
    by JAESOO
    2014/12/22 by JAESOO
    Views 777 

    Webalizer에서 국가별 로그 출력하기

  7. No Image 22Dec
    by JAESOO
    2014/12/22 by JAESOO
    Views 1236 

    Apache: A good Webalizer.conf for the Webalizer Apache Log Analyzer utility

  8. No Image 21Dec
    by JAESOO
    2014/12/21 by JAESOO
    Views 481 

    아파치 로그분석 webalizer 설치

  9. No Image 19Dec
    by JAESOO
    2014/12/19 by JAESOO
    Views 743 

    Permission denied: .htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

  10. Permission denied: /home/.htaccess pcfg_openfile: unable to check htaccess file

  11. No Image 19Dec
    by JAESOO
    2014/12/19 by JAESOO
    Views 521 

    pcfg_openfile: unable to check htaccess file, ensure it is readable

  12. No Image 04Jun
    by JAESOO
    2014/06/04 by JAESOO
    Views 2272 

    Tomcat 버전별 설명

  13. No Image 28May
    by JAESOO
    2014/05/28 by JAESOO
    Views 1510 

    Apache 실행환경을 nobody 사용자로 변경

  14. No Image 27May
    by JAESOO
    2014/05/27 by JAESOO
    Views 1872 

    리눅스 사용자 계정별 웹서버 운영하기

  15. No Image 26May
    by JAESOO
    2014/05/26 by JAESOO
    Views 1692 

    Apache 서버에서 확장자 .htm 파일 내의 php 코드가 실행되지 않는 문제 해결 방법

  16. No Image 16May
    by JAESOO
    2014/05/16 by JAESOO
    Views 1826 

    php 웹사이트에서 파일을 업로드 하는중 100%에서 멈춰버리는 현상 해결

  17. No Image 09May
    by JAESOO
    2014/05/09 by JAESOO
    Views 2166 

    Apache Struts 버전 확인 방법

  18. No Image 11Apr
    by JaeSoo
    2014/04/11 by JaeSoo
    Views 1752 

    robots.txt를 현명하게 사용하는 방법

  19. No Image 11Apr
    by JaeSoo
    2014/04/11 by JaeSoo
    Views 1759 

    robots.txt 파일(로봇배제 표준)

  20. No Image 18Apr
    by JaeSoo
    2013/04/18 by JaeSoo
    Views 4211 

    Windows / apache_2.4.3 + php_5.4.10 + mod_fcgid_2.3.7

Board Pagination Prev 1 2 3 4 Next
/ 4

PageViews   Today : 11751 Yesterday : 5037 Total : 21967803  /  Counter Status   Today : 11377 Yesterday : 4602 Total : 1194100

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소