Apache

[Apache] .htaccess를 활용한 이미지 외부링크 방지하기

Posted 2014. 01. 23 Updated 2017. 06. 02 Views 18875 Replies 2
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

블로그 홈페이지 운영이 어느 정도 정궤도에 올라 검색 엔진 등을 통한 유입수가 어느 정도 생기게 되면 한 종류의 불청객이 생기게 됩니다.

일명 '불펌족' 이라고 불리는, Ctrl + C, Ctrl + V 전사들입니다.

찾던 정보를 찾고나서 거기에 그치지 않고, 본문 전체를 복사해서 자신이 운영하는 블로그 등에 토씨 하나 바꾸지 않고 그대로 게재하는 방문객분들을 의미합니다.


처음에는 그냥 개인 블로그 홈페이지에서 나중에 다시 찾아보기 용이하도록 모아놓는 용도로 가져가는거라 여겼지만, 리퍼러나 접속통계 분석을 들여다보면 장밋빛 예상과는 많이 다르다는 사실을 깨닫게 되었습니다.

검색엔진 등을 통해 사람들이 많이 찾는 정보를 검색한 뒤, 그 사이트의 내용을 통째로 긁어서 자신들이 운영하는 홈페이지에 자신들이 쓴 글인 양 버젓이 걸어놓고 '영업'을 하고 있는 사이트가 다수 존재한다는 사실도 오래전부터 알고 있었습니다. (대개 커뮤니티 활성화를 통해 광고 수익을 꾀하는 사이트였습니다.)


블로그를 직접 운영해 본 사람은 알겠지만, 포스팅 한개를 작성하기 위해서는 그 주제가 무엇이 되었던지 간에 [글쓰기] 버튼을 클릭하고, 마지막으로 [완료] 버튼을 클릭하기까지 적지 않은 시간과 노력이 필요합니다.

지금 이 포스팅도 마찬가지지만, 문단을 썼다 지웠다 커서가 앞뒤로 계속 요동치며 글이 완성되어 나가고 있습니다.


▲ 지금 이 순간, 제가 보고 있는 화면입니다.


물론, 모든 포스팅을 저 혼자서 독창적으로 처음부터 끝까지 쓰는 일은 거의 없습니다. 공학이나 기술 분야이다 보니 저 역시 검색엔진을 통해 많은 자료들을 찾아보고 그것을 복습하는 차원에서 다시 기록해 보며 포스팅을 하곤 합니다.

단, 위에서 언급한 일부 누리꾼들처럼 잘 정리된 사이트에서 처음부터 끝까지 마우스로 주욱 긁어서 붙여넣기 하고 손 탈탈 털고 일어나는 행위는 절대 하지 않습니다.

적어도 한 이슈를 해결하기 위해 5군데 이상의 사이트를 돌아다니고, 같은 이슈를 서로 조금씩 다르게 해결한 사례들을 보면서 그것들을 조합해서 나만의 새로운 해결법을 만들어 냅니다.

소스 코드 같은 경우도 복사-붙여넣기 하지 않고 직접 키보드로 쳐서 입력합니다. 글을 보는 사람 입장에서는 어차피 같아 보이겠지만, 적어도 최소한의 성의를 표시하는 저만의 방법입니다.


'개인적인 목적'으로 포스팅을 통째로 긁어가서 자신만의 공간에 저장해 두고 보겠다는 누리꾼들은 저는 나쁘게 생각하지 않습니다. 그러한 행위는 오히려 권장해야 할 행위입니다.

그런 선량한 목적의 방문객들을 보호하기 위해 그간 많은 외부 링크가 있다는 사실을 알고도 묵인해 왔지만, 근래에 들어서 외부 링크 트래픽이 급격히 증가하는 경향이 포착되어 불가피하게 이미지 외부 링크를 차단시켜야만 했습니다.

그 방법은 그간의 고심에 비하면 새발의 때라 할 수 있을 정도로 아주 간단하고, 또 쉽습니다.


외부링크 방지를 위한 .htaccess 파일 작성하기

다음 구문을 자신의 사이트 주소에 맞도록 적절히 수정해서 .htaccess로 저장한 뒤, 웹 디렉토리의 루트에 위치시키도록 합니다.

주소가 있는 부분은 이미지 링크를 허용할 사이트 주소를 모두 쓰면 되고, 마지막줄의 파일 경로는 대체 이미지의 경로를 입력하면 됩니다.

즉, 외부 링크로 이미지를 불펌할 경우 요청한 이미지 대신 대체 이미지가 표시됩니다.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?(www를 제외한 사이트 주소) [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?naver.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?nate.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?daum.net [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?paran.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.co.kr [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.co.com [NC]
RewriteRule \.(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)$ http://(대체 이미지 경로) [NC,R,L]

3, 11번째 줄을 자신의 사이트 상태에 맞도록 적절히 수정해 주도록 합니다.

4~10번째 줄은 Referer가 검색엔진인 경우 차단하지 않기 위해 삽입한 줄입니다. 검색엔진에서도 차단하고 싶으면 이 줄을 삭제해 주면 됩니다.

대체 이미지는 도메인이 다른 곳에 저장된 이미지의 경로를 지정해야 합니다. 즉, 대체 이미지를 같은 사이트에 지정하려면 이 방법이 아닌 조금 다른 방법을 사용해야 합니다.

대체 이미지를 표시하지 않으려면 마지막줄을 다음과 같이 입력하도록 합니다.

RewriteRule \.(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)$ - [NC,F,L]


.htaccess 자동 생성 사이트

.htaccess파일을 수동으로 만드는 과정이 귀찮다면 다음 사이트를 통해 필요한 정보 입력만으로 자동 생성해서 사용할 수 있습니다.

http://www.htaccesstools.com/hotlink-protection/

htaccesstools.png
▲ htaccesstools.com - 외부 링크 방지용 .htaccess파일 자동 생성기

  • Allowed Domains: 사이트의 주소를 입력합니다.
  • Allowed Blank Referers: Request의 Referer 필드가 비어 있을 경우 어떻게 처리할지를 선택합니다. 크롤러가 아닌 일반적인 브라우저의 경우 Referer필드가 비어있는 Request를 만드는 경우는 거의 없으므로 허용(Allow)해 두어도 크게 문제가 되지 않습니다.
  • Blocked Image URL: 대체 이미지의 경로를 입력합니다.
  • Files To Protect: 외부링크를 방지할 파일의 확장자를 Space로 구분하여 나열합니다.


이렇게 오늘 결국 이미지 불펌차단코드가 추가되었습니다. 사실, 이렇게 글을 쓰고 있는 중에도 기분이 썩 좋지만은 않습니다. 이런 코드를 넣지 않아도 누리꾼들이 온라인상의 매너를 잘 지켜주면 얼마나 좋을까요..

지금 이곳에 그렇게 많은 글들이 있는 것은 아니지만, (현재 시점 기준으로 전체 618개의 문서가 등록되어 있네요.) 모두 하나같이 정성들여서 작성한 소중한 글들입니다.

그러한 마음에 오른쪽 상단에 있는 CC표시까지 부착하고, 그게 무슨 뜻인지 잘 모르는 분들을 위해서 부가 설명까지 붙여놨지만, 생각만큼 잘 지켜주는것 같지는 않습니다. 복붙에 익숙해지면 그렇게 될련지요.


많은 다른 블로그들을 돌아다니다 보면, 간혹 페이지 전체를 마우스로 드래그하거나 오른쪽 버튼을 사용할 수 없도록 스크립트 코드를 추가해 놓은 곳들을 발견하곤 합니다.

운영자 입장에서는 자신이 쓴 소중한 글을 보호하기 위해 취한 어쩔 수 없는 조치이겠지만, 방문자 입장에서는 답답하기 그지 없을 것입니다.

독서 감상문이나 영화 감상문, 혹은 인문학적 주제의 글들은 그렇다 쳐도, 공학이나 기술과 관련된 글은 내용을 복사하거나(소스코드 등), 발췌해야 하는 경우가 자주 있습니다.

이럴 때 오른쪽 버튼을 쓰지 못해서 포스트 중간에 나와 있는 긴 소스코드를 일일이 손으로 쳐야 한다면 그건 방문객에 대한 배려가 빵점이라고밖에 할 수가 없겠죠.


사실 마우스 오른쪽 버튼을 사용하지 못하게 하는 그런 종류의 스크립트가 심어져 있더라도 마음만 먹으면 내용 전체를 복사할 수 있습니다. 단지 그 과정이 귀찮아서 포기하게 만들 뿐이지요.

제가 운영하고 있는 이 블로그도 사실 마우스 몇 번 클릭이면 그런 종류의 스크립트를 글 전체에 심어서 불펌이 귀찮고 짜증나게 만들 수도 있습니다.

혹은, 페이지 내용 전체를 Encrypting하여 간신히 소스보기에 접근했더라도 멘붕하고 창을 닫게 만드는 높은 수준의 보안 테크닉을 구사할 수도 있습니다.

단지 지금은 그런 불펌을 막는 것보다, 방문객의 편의를 더 중요하게 생각하고 있기 때문에 하고 있지 않을 뿐인 것입니다.


글쎄요.. 계속 복붙불펌이 남발하고 저도 뭔가 조치를 취해야겠다는 생각이 점점 더 강해지면, 어떤 정책을 취하게 될지는 잘 모르겠습니다만, 부디 그렇게 되지 않았으면.. 합니다.