2016-11-26 3 views
1

방지 핫 링크 그리고 추천 도메인 인 example.com과 아마도 개발 서버로 사용하는 또 다른 도메인에 대한 액세스를 제한하는 다른 콘텐츠 구매입니다.CloudFlare와 S3 양동이 : 이미지 핫 링크 방지하기 위해 내가 좋아하는 것</p> <pre><code>https://images.example.com/myfile.jpg </code></pre> <p>: 나는 성공적으로 같은 URL을 사용 Cloudflare CDN을 통해 컨텐츠를 제공 images.example.com라는 아마존 S3 버킷을 사용하고

{ 
"Version": "2012-10-17", 
"Id": "http referer policy example", 
"Statement": [ 
    { 
     "Sid": "Allow get requests referred by www.example.com", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::images.example.com/*", 
     "Condition": { 
      "StringLike": { 
       "aws:Referer": [ 
        "http://www.example.com/*", 
        "http://example.com/*" 
        ] 
      } 
     } 
    }, 
    { 
     "Sid": "Explicit deny to ensure requests are allowed only from specific referer.", 
     "Effect": "Deny", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::images.example.com/*", 
     "Condition": { 
      "StringNotLike": { 
       "aws:Referer": [ 
        "http://www.example.com/*", 
        "http://example.com/*" 
        ] 
      } 
     } 
    } 
] 

}

이를 테스트하려면 :

나는 모두가 어떤 도메인이 아닌 특정 도메인에서 특정 도메인에서 허용하고 거부하는 버킷 정책을 시도했습니다. 나는 다른 서버에서 작은 웹 페이지를 업로드 : www.notExample.com를 내가 사용하여 이미지 링크하여 시도 여기서

<img src="https://images.example.com/myfile.jpg"> 

을하지만 hotlinked 이미지에 관계없이 나타납니다.

은 또한 다음과 같은 CORS가 핫 링크를 방지하기 위해 일했다
<CORSConfiguration> 
    <CORSRule> 
    <AllowedOrigin>http://www.example.com</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

이들 중 어느

를 지배하려고했습니다. 나는 버킷 정책과 CORS (하나 또는 다른 플러스 둘 다)의 조합을 사용하여 CloudFlare에서 캐시 된 파일을 삭제하려고 시도했지만 아무 것도 작동하지 않습니다.

이 작업은 상대적으로 간단한 작업입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

3

Cloudflare는 정보를 최종 사용자에게 더 가깝게 캐시하는 콘텐츠 배포 네트워크입니다.

사용자가 Cloudflare를 통해 콘텐츠에 액세스하면 콘텐츠가 Cloudflare의 캐시에서 제공됩니다. 콘텐츠가 캐시에 없으면 Cloudflare는 콘텐츠를 검색하여 캐시에 저장하고 원래 요청으로 다시 제공합니다.

페이지 요청이 Cloudflare (리퍼러를 생성하는 사용자 브라우저가 아닌)에서 제공되거나 Cloudflare의 캐시에서 직접 제공되기 때문에 Amazon S3 버킷 정책이 Cloudflare에서 작동하지 않습니다 (요청이 S3에 도달하지 못함).).

Cloudflare을 S3가 아닌 리퍼러 규칙으로 구성해야합니다.

참조 : What does enabling CloudFlare Hotlink Protection do?

일부 대안 :

  • 사용 아마존 CloudFront를 - 그것은 서명 URL을 사용하여 serve private content 수있는 능력을 가지고 - 응용 프로그램은 HTML을 생성 할 때 특별한 URL을 생성하여 액세스 권한을 부여 할 수 있습니다 페이지.
  • referer 규칙을 사용할 수있는 Amazon S3에서 직접 컨텐츠를 제공하십시오. Amazon S3는 응용 프로그램에서 생성 할 수있는 pre-signed URLs도 지원합니다.
+0

감사합니다. 클라우드 플레어의 사이트에서 'cloudflare with s3'기사를 사용하는 것은 액세스를 제한하는 것보다 s3에 대한 액세스를 허용하는 것과 관련이 있습니다.불행하게도, 핫 링크 보호 기능은 이미지에서만 작동하며 주요 핫 링크/대역폭 문제인 자체 호스팅 오디오 및 비디오 파일과는 작동하지 않는 것으로 보입니다. – dijon

+0

몇 가지 대체 옵션을 추가했습니다. –