블로그 & IT/워드프레스

이미지 외부 링크 차단(핫링크 금지)

moodyblues 2022. 2. 18. 01:13

외부 사이트에서 이미지 링크(=핫링크, 핫링킹: Hotlinking) 차단, 금지

한 사이트에 있는 이미지를 다른 사이트에서 인라인으로 링크를 걸어 사용하게 되면 그 사이트에서 사용해야 할 대역폭과 트래픽을 빼앗기게 된다. 다른 페이지에서 자신의 이미지에 링크를 걸어 사용하는  것을 "핫링크"라고 하는데, 여기에 대해 대응하는 방법으로 아파치의 mod_RewriteRule 모듈이 있다.

이미지 외부 핫링크 차단
이미지 외부 핫링크 차단

핫링크 차단 방법

1. 이미지 핫링크 차단

가장 간단한 방법은 이미지 링크 요청에 거부하는 것이다.
.htaccess 파일을 열고 다음 내용을 추가한다.
(자신의 사이트 외의 모든 사이트에 대해 거부)
(검색 엔진 등 링크를 허용할 사이트가 있으면 아래 구글처럼 추가)

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?abc.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)google.com [NC]
# RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

HTTP_REFERER: HTTP 리퍼러

만일 B사이트의 소유자가 A사이트의 이미지에 링크를 걸어 B사이트에서 사용하면, B사이트 방문자가 B사이트의 해당 이미지를 클릭할 때 웹 브라우저는 A 사이트로 REFERER(리퍼러 : 참조 주소)를 전송한다. A 사이트의 소유자는 이 REFERER를 보고 B사이트에서 A사이트에 있는 이미지를 링크(참조)한 사실을 알 수 있다.
즉, HTTP_REFERER란 링크를 통하여 사이트로 방문 시 남는 흔적(웹 브라우저가 생성하는 데이터)을 말한다.

  • RewriteCond 재작성 조건
  • RewriteRule 재작성 규칙
  • Cond = Condition
  • Rule = Rule

위 코드의 내용

① Rewrite 엔진을 켜고
② HTTP_REFERER의 값이 공백이 아닐 경우
③ REFERER 주소가 대소문자 구분([NC]) 없이 www.abc.com 이 아닐 경우
④ REFERER 주소가 대소문자 구분([NC]) 없이 www.google.com 이 아닐 경우
⑤ 대소문자 구분 없이 jpg, jpeg, png, gif로 끝나는 파일에 대한 접근을 할 수 없다.(치환하지 않고 Fobidden 에러([F]) 가 발생하도록 한다.)

위 코드에 사용된 정규 표현식 부호
! not : 아님
^ 시작
$
^$ 공백
!^$ 공백이 아님(위의 구문에서: 공백이 아니라면)

2. 다른 사이트의 이미지로 리디렉션

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?abc.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ https://다른사이트 이미지주소 [R,NC,L]

3. 계속 : 다음 글

다음 글: .httaccess파일 위치, 파일을 여는방법, 수정 방법, 파일 다시 업로드하는 방법,  Rewrite

2022.02.19 .htaccess 파일과 mod_rewrite, http https 리다이렉트,