Anti-Hotlinking

최신 업데이트:2022-04-11 12:56:29

1 기능 소개

1.1 개요

핫링킹은 저작권 침해는 물론 이용자 이탈을 일으킬 수 있습니다. 이는 대역폭 및 서버 유지보수 비용을 증가시켜 전체 수익을 감소시킬 것입니다. 따라서 핫링킹는 시장이 시급히 해결해야 할 이슈입니다.

CDNetworks에서 제공하는 핫링킹 방지 기능은 특정 규칙을 가진 핫링킹 요청을 식별하고 이러한 요청에 대한 서비스 제공을 거부하여 핫링킹을 방지하며, CDNetworks 고객에게 대역폭 및 서버 운영 비용을 절감합니다.

1.2 해당 제품 라인

  • 콘텐츠 가속
  • 동적 웹 가속
  • 미디어 가속
  • 미디어 가속 라이브 방송

2 기능 상세 정보

CDNetworks는 다음과 같이 핫링킹 방지 기능을 출시했습니다:

  • 기본 핫링킹 방지:
  • IP 블랙리스트/화이트리스트 핫링킹 방지, 쿠키 핫링킹 방지, 레퍼러 핫링킹 방지, UA 헤더 핫링킹 방지 및 사용자 정의 헤더 핫링킹 방지;
  • 타임스탬프 핫링킹 방지
  • Back-to-Origin 인증 핫링킹 방지
핫링킹 방지 기능 기능 설명
IP 블랙리스트/화이트리스트 핫링킹 방지 요청 IP 주소를 식별하기 위해 일치하는 IP 주소만 서비스에 접근할 수 있습니다.
쿠키 핫링킹 방지 HTTP 요청에 쿠키 헤더 값을 식별하기 위해 쿠키 헤더와 일치하는 HTTP 요청만 서비스에 접근할 수 있습니다.
레퍼러 핫링킹 방지 HTTP 요청에 레퍼러 헤더 값을 식별하기 위해 레퍼러 헤더와 일치하는 HTTP 요청만 서비스에 접근할 수 있습니다.
UA 헤더 핫링킹 방지 HTTP 요청에 User-Agent 헤더 값을 식별하기 위해 User-Agent 헤더와 일치하는 HTTP 요청만 서비스에 접근할 수 있습니다.
사용자 정의 헤더 핫링킹 방지 고객 요청에 따라 HTTP 요청에 다른 사용자 정의 헤더를 식별하기 위해 헤더와 일치하는 요청만 서비스에 접근할 수 있습니다.
타임스탬프 핫링킹 방지 고객과 협의한 타임스탬프 및 비밀 키로 URL을 암호화하고 요청 시간이 유효한지 검증합니다.
Back-to-Origin 인증 핫링킹 방지 오리진 서버의 인증 규칙을 준수하여 오리진으로 돌아가 받은 각 요청에 대한 정보를 인증합니다.

고객은 자신의 비즈니스 유형에 따라 다양한 핫링킹 방지 기능을 선택할 수 있습니다. 아래의 비교가 도움이 될 것입니다.

핫링킹 방지 애플리케이션 시나리오 장점
기본 핫링킹 방지 지정된 IP 주소/웹 페이지/브라우저/플레이어의 요청 및 지정된 쿠키의 요청을 허용하거나 허용하지 않습니다. 쉽게 실현할 수 있습니다.
타임스탬프 핫링킹 방지 만료되지 않은 요청을 허용합니다. 핫링킹 방지 효과가 좋고 만료된 모든 요청을 거부합니다.
BtO 인증 각 요청마다 핫링킹 방지 BtO 인증이 필요합니다 글로벌 인증 시나리오에서 적용되고 우수한 핫링킹 방지 효과가 있습니다. 글로벌(국가/글로벌) 데이터 분석을 기반으로 인증 결과를 생성할 수 있으며, 방안이 유연하고 자유롭게 정의할 수 있습니다. 사용자 계정 등 정보를 기반으로 인증이 가능합니다.

2.1 기본 핫링킹 방지

기본 핫링킹 방지에는 IP 블랙리스트/화이트리스트, 쿠키, 레퍼러, UA 헤더 및 사용자 정의 헤더 핫링킹 방지가 포함됩니다.

2.1.1 애플리케이션 시나리오

  1. IP 블랙리스트/화이트리스트 핫링킹 방지는 다음과 같은 상황에 적용됩니다:
    a) 일부 IP 주소는 비정상적인 접속 동작이 있을 경우, 예를 들어 핫링킹 및 공격;
    b) 가속 콘텐츠의 IP주소 접근 제한이 있을 경우, 예를 들어 내부 직원만 접속할 수 있거나 외부 IP주소로 접근 금지 등;
    c) 가속 콘텐츠에 접근 구역의 제한이 있을 경우, 예를 들어 런던 사용자만 접근이 가능하거나 다른 지역의 사용자가 콘텐츠에 접근 금지 등.
  2. 가속 콘텐츠가 특정 쿠키의 요청에만 접근을 허용할 경우 쿠키 핫링킹 방지를 적용할 수 있습니다.
  3. 리퍼러 핫링킹 방지는 가속 콘텐츠가 특정 페이지에만 접근할 수 있을 경우에 적용할 수 있습니다. 예를 들어 사용자가 특정 페이지에 링크만 통해 자원에 접근할 수 있습니다.
  4. 사용자-에이전트 핫링킹 방지는 다음과 같은 시나리오에 적용할 수 있습니다:
    a) 가속화된 콘텐츠가 특정 브라우저에서만 접속할 수 있을 경우;
    b) 가속된 도메인이 특정 클라이언트만 접근할 수 있을 경우. 예를 들어 자체 클라이언트가 있을 때, 이 클라이언트는 특정 사용자-에이전트 정보가 포함된 요청을 전송할 때 사용자-에이전트 핫링킹 방지를 적용할 수 있습니다.
  5. 사용자 정의 헤더 핫링킹 방지는 사용자 정의 헤더로 HTTP 요청에 접근을 허용해야 하는 고객에게 적용됩니다.

2.1.2 작업 프로세스

image.png
그림1 핫링킹 방지 기본 작업 프로세스

(1)사용자가 CDN PoP에 요청을 보낼 경우;
(2) CDN PoP는 사용자 정보(예를 들어 IP, 레퍼러, 사용자-에이전트 및 쿠키 등)가 설정 요구에 충족하는지 판단합니다. 일치하지 않으면 거절합니다. 로컬에 캐시가 있을 경우 직접 응답하고 없을 경우 오리진에서 해당 리소스를 가져옵니다.
(3) 오리진은 CDN PoP 요청에 응답합니다.
(4) CDN PoP는 클라이언트 요청에 응답하고 리소스를 로컬로 캐시합니다.

2.1.3 설명

기본 핫링킹 방지 기능은 다음과 같은 방법으로 설정할 수 있습니다:
(1) 고객은 SI플랫폼에서 스스로 설정할 수 있습니다;
(2) 해당 CSE는 설정할 수도 있습니다;

2.1.4 참고

IP 블랙리스트 경우, CDNetworks는 스마트 리스트를 지원하고 스마트 리스트는 IP 주소가 edge PoP에 접근 횟수를 제한하여 CC 공격을 방지할 수 있습니다. 이 기능을 활성화하면 CDNetworks 클라우드 플랫폼은 IP 주소의 접근 횟수를 표시하여 접근을 제한합니다. IP 주소는 어떤 도메인의 요청이 설정된 임계값을 초과할 때 이 IP 주소의 접근을 제한합니다. 요청 제한 횟수를 설정할 수 있습니다.

2.2 타임스탬프 핫링킹 방지

2.2.1 특성 설명

타임스탬프 핫링킹 방지 기능이 활성화되면 고객은 서명 만료 시간 설정을 통해 파일 접근 시간 제한을 제어할 수 있습니다.

타임스탬프 핫링킹 방지는 각 요청 URL에 일정 시간의 "적시성"을 부여합니다. CDN 플랫폼에서 md5 알고리즘을 사용하여 암호문, 만료 시간, 파일 경로 등 정보를 계산함으로써 CDNetworks는 모든 요청 URL에 유일한 값을 제공할 수 있습니다. 이 값을 URL에 추가한 후에 CDN PoP는 요청이 합법적인지 확인할 수 있습니다. 요청에 일치하는 md5 값이 없으면 서비스를 거부합니다. 암호문은 비공개이므로 위조할 수 없습니다.

다음은 타임스탬프 핫링킹 방지의 작업 원리입니다:

일반적인 검증 방법은 MD5 암호화 알고리즘을 사용합니다: 키 및 암호화 규칙에 대해 고객과 합의하고, 규칙에 따라 지정된 매개 변수를 결합하여 MD5값을 계산하며, 계산된 MD5값을 URL에 추가합니다. 암호문은 비공개이므로 URL을 위조할 수가 없습니다. 타임스탬프와 MD5 암호화된 문자열이 포함된 URL이 CDN PoP에 접근하면 CDN PoP는 타임스탬프가 만료되었는지를 먼저 판단합니다. 만료가 되면 요청을 직접 거부하고 그렇지 않으면 합의된 알고리즘을 기반으로 MD5 암호화 문자열을 검증합니다. 검증이 일치하면 CDN PoP는 요청이 합법한 것으로 판단하여 서비스를 제공할 것입니다. 그렇지 않으면 CDN PoP는 URL을 위조한 것으로 판단하여 불법 요청으로 서비스 제공을 거부합니다.

다음 그림과 같이, 일반적인 암호화 규칙은 고객과 합의된 키, URL이 가진 타임스탬프, URL의 파일 경로를 일정한 규칙으로 조합한 후에 해당 MD5값을 계산하는 것입니다.

image.png

그림2 타임스탬프 핫링킹 방지 원리

2.2.2 애플리케이션 시나리오

핫링킹 방지 효과에 대한 요구가 높고 URL 시간에 민감한 시나리오에 적용됩니다. 예를 들어 대량 파일 다운로드, 온라인 비디오 보기 등.

2.2.3 작업 프로세스

image.png
그림3 타임스탬프 핫링킹 방지 작업 프로세스

  1. 사용자가 콘텐츠 URL을 요청합니다;
  2. 고객의 오리진 또는 콘텐츠 관리 서버는 핫링킹 방지 문자열을 사용하는 시간에 민감한 콘텐츠 URL을 생성하고 합의된 규칙에 따라 사용자에게 응답합니다. 예:
    http://cdnetworks.cdn.com/test.mp4?wsSecret=c82151660097f7c341d6df8b037e82c7&wsTime=201710111042
  3. 사용자는 받은 URL을 이용하여 CDN PoP에 요청을 합니다.
  4. CDN PoP는 타임스탬프 핫링킹 방지 검증을 수행하여 URL이 만료되었는지 판단합니다. 만료되면 요청을 거부하고 그렇지 않으면 합의된 규칙에 따라 MD5값을 계산하여 비교합니다. 일치하지 않을 경우 PoP는 요청을 거부하고 일치할 경우 서비스를 제공합니다. 또한, CDN PoP에 캐시가 없을 때 오리진으로 돌아가서 콘텐츠를 검색합니다.
  5. 비디오 오리진은 콘텐츠로 CDN PoP에 응답합니다.
  6. CDN PoP는 콘텐츠로 사용자에게 응답하고 로컬로 캐시합니다.

CDNetworks는 고객의 상황에 따라 여러 가지 타임스탬프 유형을 제공합니다.

1) 고객이 애플리케이션을 가지고 있을
고객이 애플리케이션을 가지고 있을 때, 예를 들어 라이브 방송이나 다운로드 고객, 고객과 합의되면 단말기/애플리케이션은 이 값을 계산합니다. 요청에 일치하는 md5값이 없으면 서비스를 제공하지 않습니다. 암호문은 비공개이므로 위조할 수 없습니다. 타임스탬프 핫링킹 방지의 URL 암호화는 오리진에 의해 생성되며, CDN은 확인만 수행합니다.
예를 들어:
오리진 URL은 “http://www.example.com/test.jpg”입니다;
타임스탬프가 있는 암호화된 URL은 다음과 같습니다:
(1)“http://www.example.com/test.jpg?CWSecret=c8ba17a8ba47749755ad8754f244108b&CWTime=55d5a69c”
(2)“http://www.example.com/c8ba17a8ba47749755ad8754f244108b/55d5a69c/test.jpg”
이 URL의 매개 변수에 대한 설명:
CWSecrett은 비밀 문자열입니다.
CWSecret = md5 (URI + CWKey + CWTime)
URI = URL경로에 접근하는 최종 사용자– URI.
CWKey =고객과 비밀 키를 협상했습니다.
CWTime =URL의 타임스탬프 값을 요청하고 UNIX time은 16진수 형식으로 사용합니다, 이 예에서 55d5a69c는 2015/8/20 18:6:20 GMT+8을 의미합니다.
2) 고객이 애플리케이션이 없을 경우

주로 단말기가 없는 고객이 사용하는 기능입니다.

이런 상황에서는 클라이언트가 먼저 콘텐츠를 요청하고 오리진에서 암호화된 URL을 제공한 후 사용자가 요청을 처리할 수 있습니다.
3) 고객이 컨텐츠 관리 시스템을 가지고 있을 경우**😗*
주로 "콘텐츠 관리 서버"를 보유한 미디어 엑셀러레이션 고객이 사용하는 기능입니다.

이런 상황에서는 사용자가 콘텐츠 URL을 요청하고 콘텐츠 관리 서버가 암호화된 URL을 제공한 후 사용자가 요청을 처리할 수 있습니다。
4) UTV(URL 태그 검증**)** 타임스탬프 핫링킹 방지가 지원되어 검증 효율성 향상
CDNetworks는 UTV 타임스탬프 핫링킹 방지 방식도 지원하고 애플리케이션 터미널의 두번째 및 후속 요청에 대한 md5값 계산 검증 시간을 단축할 수 있습니다. 상세한 내용은 다음과 같습니다.

image.png

그림4 UTV 타임스탬프 핫링킹 방지의 기본 원리

  1. 고객은 암호화된 URL로 우리 edge PoP를 요청합니다.
  2. PoP가 요청을 식별합니다. 통과되면 PoP는 오리진에서 데이터를 가져옵니다
  3. 오리진에서 CDN PoP로 데이터를 반환합니다;
  4. 데이터를 수신한 후 PoP는 요청한 해시 값을 고객에게 피드백합니다:
    Px-time: xx (만료 시간)
    px-hash=xxx (비밀 키+만료 시간+ URI 결로 해시)
    다음에 클라이언트는 헤더에서 이 값을 요청합니다: “쿠키”
  5. 클라이언트가 edge PoP에서 제공하는 쿠키를 요청합니다. 쿠키 정보가 유효하면 PoP에서 md5 계산을 실행하지 않고 직접 서비스를 제공하고 쿠키 정보가 만료되면 md5 값을 검증할 것입니다.

2.2.4 설명

CDNetworks CSE는 고객과 다음 정보를 확인한 후, 설정 구현을 위해 PMS 플랫폼에서 운영팀에 티켓을 보내야 합니다.

  • CDNetworks는 두 가지 핫링킹 방지 방법을 지원합니다. 첫 번째 방법은 암호화된 문자열과 타임스탬프를 “?” 뒤에 배치합니다. 다른 방법은 암호화된 문자열과 타임스탬프를 “?” 앞, “호스트” 뒤에 배치합니다. 일반적으로 첫번째 방법을 권장하지만 고객이 어떤 방법을 채택할지는 확인해야 합니다.
  • 암호화된 문자열과 타임스탬프가 “?” 뒤에 배치되면 이 두 값을 포함하는 매개 변수 명칭을 확인합니다.
  • 암호화된 문자열과 타임스탬프가 “?” 앞, “호스트” 뒤에 배치되면 암호화된 문자열과 타임스탬프의 위치를 확인합니다.
  • 타임스탬프 형식을 확인합니다. 기본 형식은 Unix 타임스탬프입니다: 예를 들어 1486953720은 2017/02/13 10:42:00을 표시합니다; 십진수 타임스탬프는 16진수로 표시됩니다: 예를 들어 1486953720은 58a11cf8을 표시합니다.
  • 사용자 요청 URL에 포함된 타임스탬프가 URL 생성 시간인지 URL 만료 시간인지 확인합니다. 일반적으로 만료 시간을 권장합니다.
  • MD5 암호화와 관련된 키를 확인하고 여러 키를 지정이 가능합니다. 여러 암호문일 경우 CDN PoP는 암호문 중 하나를 택하여 MD5 검증을 합니다. 검증되면 요청은 합법적인 것으로 판단됩니다.
  • MD5 암호화와 관련된 매개 변수 및 조합 순서를 확인합니다. 일반적으로 “URI” + “Key” + "Time"의 조합을 권장하고 조합 순서는 사용자 정의할 수 있습니다.
  • 오리진으로 돌아가는 방법을 확인합니다: CDN PoP가 오리진으로 돌아갈 때 URL에 핫링킹 방지 매개 변수가 필요한지 확인합니다. 고객이 추가 타임스탬프 검증을 수행하거나 통계 분석에서 “?” 후에 일부 매개변수가 필요한 경우 매개변수가 필요합니다. 그렇지 않으면 매개변수가 필요하지 않습니다.

2.3 Back-to-Origin 인증 핫링킹 방지

2.3.1 기능 설명

CDN PoP는 요청 접수할 때 해당 요청 정보에 대한 BtO 인증을 실시하고 인증 결과에 따라 서비스 제공 여부를 결정합니다.

BTO 인증 핫리킹 방지의 특성은 CDN PoP가 각 요청을 고객 인증 서버로 먼저 전송하고 인증 결과에 따라 서비스 제공 여부를 결정하는 것입니다. 핫링킹 방지에 대한 요구가 높은 고객에게 적용됩니다. 대부분 고객의 인증 서버와 컨텐츠 서버는 서로 독립되어 있습니다.

고객의 아키텍처에 따라 택할 수 있는 오리진으로 돌아가는 방식은 두 가지가 있습니다: “동일한 URL로 요청 및 인증”과 “다른 URL로 요청 및 인증”. 상세한 내용은 작업 프로세스를 참고하십시오.

2.3.2 애플리케이션 시나리오

  1. 각 요청마다 BTO 인증이 필요하므로 BTO 인증 핫링킹 방지는 사용자의 대기 시간을 증가 시킬 수 있습니다. 스트리밍 및 대용량 파일 다운로드와 같은 시나리오에 적합하고 대량 작은 파일을 로드해야 하는 사이트에는 적용되지 않습니다.
  2. 핫링크 방지에 대한 보안 요구가 높은 시나리오에도 적합합니다. 예를 들어 저작권 보호.

2.3.3 작업 프로세스

2.3.3.1 다른 URL 로 요청 및 인증

image.png

그림 5 다른 URL로 요청 및 인증

(1) 최종 사용자가 URL1 요청을 시작합니다, 예:
http://cdn.example.com/test.dat?auth=xxxx&name1=value1&name2=value2
(2) CDN PoP는 인증 매개 변수 auth=xxx를 추출하고 다시 작성하여 인증URL2에 추가한 다음 고객 인증 서버로 인증 요청을 전송합니다, 예: http://auth.example.com/authorize?auth=xxxx
(3) 인증 서버는 매개 변수 auth=xxx의 합법성을 인증하고 결과에 응답합니다.
(4) 인증은 성공했지만 CDN PoP가 요청된 콘텐츠를 캐시하지 않으면 CDN PoP는 오리진에서 콘텐츠를 가져올 것입니다. 요청 URL3: 예: http://cdn.example.com/test.dat? name1=value1&name2=value2
(4’) 인증이 성공되면 CDN PoP가 콘텐츠를 캐시할 경우 사용자에게 직접 응답합니다.
(4”) 인증이 실패되면 CDN PoP는 고객이 설정한 정책에 따라 403 Forbidden 또는 302 Redirect(Redirect URL은 고객이 지정해야 함)에 응답합니다.
(5) 오리진은 콘텐츠로 CDN PoP에 응답합니다.
(6) CDN PoP는 콘텐츠로 최종 사용자에게 응답하고 로컬에서 캐시합니다.

2.3.3.2 동일한 URL으로 요청 및 인증

image.png

그림6 동일한 URL로 요청 및 인증

(1) 최종 사용자가 URL 요청을 합니다.
(2) CDN PoP는 요청에 대해 투명 전송 BtO를 진행합니다.
(3) 오리진이 요청을 검증합니다. 만약 합법적이고 파일을 업데이트하지 않으면 오리진은 304 Not Modified로 응답하고 파일이 업데이트된 경우 200 또는 206(범위 요청이 있을 경우)으로 응답합니다. 요청이 유효하지 않을 경우 오류 상태 코드(기본값 403, 사용자 정의 가능) 또는 302 리디렉션(리디렉션 URL은 고객과 협의 필요)에 응답합니다.

(4) CDN PoP 응답 파일 또는 CDN PoP 응답 거부(403) 또는 302 리디렉션한 페이지에 응답합니다.

2.3.4 참고

  1. CDNetworks는 캐시에 영향을 미칠 수 있으므로 오리진 서버 응답에 Last-Modified 또는 Etag 헤더가 있는지 확인해야 합니다.
  2. 고객은 인증 알고리즘을 개발하고 인증 플랫폼을 구축하여 관리해야 합니다.
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.