2012-06-21 3 views
0

내 페이지에 flip-book-plugin (예 : http://www.turnjs.com/)을 추가하고 싶습니다. 모든 플러그인은 원시 <img> 태그를 사용하여 URL &을 다운로드 할 수 있습니다. 그 시나리오를 피하기를 원합니다. (사용자가 이미지를 다운로드 할 수 없도록하려는 경우) 이렇게하려면 몇 가지 보호에 대해 궁금해지기 시작했습니다.<img>의 다운로드 소스를 피할 수 있습니까?

그리고 여기 어떻게 할 수 있는지 몇 가지 팁이 필요합니다.

전체 페이지를 동적으로 생성하려고했습니다. 하지만 페이지를 비동기로로드하면 FireBug를 통해 URL (e, g)을 얻을 수 있습니다.

... 또는 <img> 태그를 동적으로로드 할 위치에 태그를 사용합니까?

+0

브라우저에서 사용할 수있는 모든 자산을 사용자가 사용할 수 있습니다. 그것은 이미지, 스타일 시트, 스크립트 등에 사용됩니다. 누군가 이미지를 다운로드하는 것을 막을 수는 없습니다. –

+0

그들은 열심히 노력하지 않아도됩니다. 브라우저의 개발자 도구를 열고 가져 오기 지시가있는 * 모든 항목의 목록을 제공하는 곳으로 이동하십시오. 브라우저에 지시하기 전에 어떤 점프를해도 상관 없습니다. – Jon

답변

5

일반적으로 웹 페이지에 저작물로 제공하는 모든 것을 보호 할 수 없습니다. 이미지, CSS/JS 파일, 플래시 SWF, 무엇이 있습니까? 브라우저가 페이지를로드하면 레이아웃의 모든 에셋이 다운로드됩니다.

조용히하고 비하인드 스토리로 진행되는 동안 사실은 이러한 파일이 이미 클라이언트의 컴퓨터에 남아 있습니다. 그 점은 숙련 된 사용자가 파일을 획득하는 것을 막을 수는 없다는 것입니다 (왜냐하면 탐색의 유일한 성격으로 그는 에 이미이 있기 때문입니다).

0

모든 이미지는 브라우저에 의해 다운로드됩니다. 따라서 사용자는 액세스 권한을 얻을 수 있습니다. 당신이 이것을 제한하고 싶다면, 아마 당신은 어떤 종류의 암호화로 플래시를 사용할 수 있습니다 (나는 플래시로 잘 작동하지 않았습니다).

+0

사용자는 좀 더 많은 노력이 필요하지만 언제든지 플래시를 다운로드하여 액세스 할 수 있습니다. – Christoph

+0

하지만이 도구에 대한 설명은 무엇입니까? http://www.amayeta.com/software/swfencrypt/ –

+0

물론 swf를 어렵게 할 수는 있지만 완전히 보호 할 수는 없습니다. "암호화"라는 단어는 1) 정의 가역 2) 실제로 제공 할 수없는 보안 감각을주기 위해 이러한 광고에서 오용되는 경우가 많습니다. – Christoph

2

여기에 언급 된 모든 사람들이 : 사용자는 항상 브라우저에서 사용할 수있는 모든 자산을 다운로드 할 수 있습니다. 사실, 귀하의 페이지를 볼 경우 이미 해당 자산을 다운로드 할 수 있습니다.

어쨌든 당신이 할 수있는 일은 방문자가 이미지의 URL을 무효화하여 이미 2 번 배달 한 이미지를 다운로드하지 못하게하는 것입니다. 은이 서버에 약간의 스크립트를 필요로 :

  1. HTML 페이지를 제공하는 당신이 당신의 페이지에 각 요청에 "보호"할 모든 이미지에 대해 고유 한 토큰을 생성합니다. 이미지 식별자 (예 : 서버의 로컬 경로 또는 데이터베이스의 이미지 표현 ID)와 함께 캐시 (또는 데이터베이스)에 저장합니다. 이미지의 "진짜"URL을 HTML이나 JavaScript에 넣지 말고 다음과 같이 사용하십시오 : <img src="http://yourdomain.com/images/#TOKEN" alt="protected image"> 또는 <img src="http://yourdomain.com/images/imageHandler.jpg?requestID=#TOKEN" alt="protected image">

  2. 브라우저가 img의 src URL에서 리소스를로드하려고 시도합니다. 서버에서 해당 자원에 대한 요청을 받으면 이미지를 전달하고 즉시 캐시에서 토큰을 제거하십시오. 캐시에서 토큰을 찾을 수 없으면 "이 리소스의 다운로드 토큰이 이미 사용되었습니다"와 같은 오류 페이지를 제공하십시오..

  3. 적절한 캐시 제어 헤더 (HTTP/1.1 Header Field Definitions for Cache Control 참조)로 이미지를 전송했는지 확인하십시오. 이렇게하면 브라우저가 이미지를 하드 디스크에 저장하지 못하게해야합니다. (주의 : 브라우저는 항상 사용자를 위해 최상의 성능을 얻으려고 시도하므로 사용하지 마십시오. 그러나 http 표준에 따라 반드시 준수해야하는 헤더이기 때문에 브라우저는 이미지 만 저장합니다 메모리에.)

이 방법은, 바로 오류 페이지로 얻을 것이다 다운로드를 시도 단순히 복사 <img>의 SRC와 사용자. 브라우저가 이전에 이미지를 다운로드하는 데 이미 사용 했으므로 URL은 더 이상 유효하지 않습니다.

그런데 대부분의 파일 공유 및 온라인 비디오 스트림 서비스가 다운로드 링크를 보호합니다. 요청 및 자원 당 하나의 토큰 만 있으면 자원이 전달되는 즉시 토큰이 제거됩니다. 토큰이 없으면 리소스가없고 리소스의 실제 URL을 공개 할 필요가 없습니다. 실제로 "실제"URL이 필요 없습니다.

여전히 : 이것은 보안상의 문제입니다. 그러나 80 %의 경우 사용자가 이미지를 다운로드하지 못하게됩니다.

+0

소리가 잘 들지만 사용자가로드 한 이미지를 클릭하고 이미지 저장 컨텍스트 메뉴 옵션을 선택합니까? – Tony

+1

은 브라우저에 따라 다르며 일부는 다시로드하고 다운로드를 시작합니다. 일부는 메모리 캐시에서 디스크로 저장합니다. 이미지를 CSS 크기의 배경 이미지로 넣는 것이 좋습니다. div를 사용하는 대신 img 태그를 사용하십시오. –

+0

하지만 이미지가 div 배경이 될 경우 유효한 URL ('/ images/myimage.png')을 넣어야합니다. 그 토큰이 없다면? – Tony

관련 문제