문제

다운로드 할 프리웨어 물건이 많이 포함 된 웹 사이트를 소유하고 있습니다. 제가 직면 한 문제는 전 세계 사람들이 파일의 직접 링크 (예 : .zip 파일)를 가져 와서 웹 사이트 및 일반 포럼에 게시하고 있다는 것입니다. 나는 엄청난 양의 대역폭을 받고 있으며 괜찮지 만 방문한 페이지 수는 낮습니다. 링크에 추가 할 수있는 방법이나 스크립트가 있으므로 누군가 외국 웹 사이트에서 링크를 눌러 내 웹 사이트의 페이지가 열리면 파일을 다운로드하여 더 많은 방문을 얻을 수 있습니다.

예를 들어, 이것은 내 웹 사이트의 주소입니다.

http://sy-stu.org/stu/publicfiles/stdlibrary/exam.zip

누구든지 누르면 다운로드 프로세스가 직접 시작됩니다.

도움이 되었습니까?

해결책

PHP를 사용하는 경우 사용자를 다운로드에 연결하는 스크립트를 가질 수 있지만 $_SERVER['HTTP_REFERER'] 귀하의 사이트에서 온 것입니다. 그렇지 않은 경우 사이트로 리디렉션합니다.

다른 팁

귀하의 사이트는 Apache 웹 서버에서 호스팅되므로 사이트의 httpd.conf (또는 가상 호스트 블록)에서 다음을 수행 할 수 있어야합니다.

RewriteEngine On
RewriteCond   %{HTTP_REFERER} !^$
RewriteCond   %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com/  [NC]
RewriteRule   ^/PublicFiles/  /page-about-direct-links.html

그것은 기본적으로 다음과 같습니다.

  1. mod_rewrite 엔진을 켜십시오
  2. HTTP 참조자가 비어 있지 않은 경우…
  3. 내 도메인 이름이 포함되어 있지 않습니다 ( "www"의 유무에 관계없이)…
  4. /publicfiles /to /page-out-direct-links.html에 대한 요청을 리디렉션합니다.

mod_rewrite에 대한 자세한 내용은 다음을 참조하십시오. Mod_rewrite -Apache HTTP 서버

서비스중인 파일에 직접 링크를 제공하지 마십시오. 제출 버튼을 누르면 스크립트를 통해 내용을 보내는 스크립트를 제공합니다.

CGI를 통해 파일을 보내는 웹 검색을 수행하십시오.

다음은 온라인에서 찾은 깔끔한 링크입니다.여기

예를 들어 링크를 역동적이고 간접적으로 만드는 것이 어떻습니까?

X 페이지 : (정적)

<a href="Y">SuperNeat Program</a>

Y 페이지 : (동적으로 생성)

Click here to download 
<a href="Z.php?timestamp={timestamp}&counter={counter}&hash={hash}">
SuperNeat Program</a>

1970 년 이후 MSEC의 현재 시간으로 타임 스탬프를 교체합니다. 카운터 = 다운로드 당 한 번 증가하는 카운터, HASH = MD5 해시 (Timestamp, Counter, Secret Salt)의 비밀 소금 = 비밀을 유지하는 모든 좋아하는 코드.

그런 다음 z.php 페이지에서 쿼리 문자열의 카운터 및 타임 스탬프에서 해시를 다시 계산하고 쿼리 문자열의 해시와 일치하고 타임 스탬프가 최근 (예 : 이전 30 분 또는 60 분 또는 60 분 동안 또는)인지 확인합니다. 무엇이든). 그렇다면 해당 파일을 제공하십시오. 그렇지 않은 경우 오류 메시지를 던집니다. 이것은 누군가에게 파일에 직접 링크 할 수있는 짧은 기간 만 제공합니다. 원하지 않으면 z.php 쿼리 문자열에서받은 카운터 값을 추적하고 두 번 이상 허용하지 마십시오.

나는 전혀 웹 전문가가 아니지만 다음 포인터에 대해 생각하고있었습니다.

ASP.NET을 사용하는 경우 웹 사이트 레벨 도움말에서 HTTP 처리기 또는 모듈을 구성 할 수 있다면 웹 사이트 수준의 도움말 (웹에있는 정보에 대한 정보가 최근에 일부 작업에 대해 찾았습니다. 여기에 하나가 있습니다. 기사 예를 들어.

아이디어는 요청이 대상 파일에 도달하기 전에 요청을 가로 채서 표시하려는 페이지로 리디렉션하는 것입니다. 예를 들어 - 누군가가 게시 한 URL을 탐색하려는 경우 ( "http://sy-stu.org/stu/publicfiles/stdlibrary/exam.zip")이 호출을 가로 채서, 약간의 조회를 사용하여 요청을 표시하고 리디렉션하는 페이지를 찾아서 링크를 따르는 사용자가 너무 성가신 것은 아니라고 생각합니다 ("Target Save Al zip이 아닌 일부 HTML을 저장합니다).

그러나 내 계획에는 "구멍"이 있습니다. 실제로 자신의 페이지에서 작동하는 링크를 어떻게 제공합니까? 귀하의 웹 사이트에서 오는 요청을 구별 할 수 있다고 생각합니다. 웹 사이트에서 나오는 요청과 다른 사람이 오는 요청을 요청하여 요청 객체를 검사하여 핸들러/모듈을 확인할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top