0

ページにフリップブック プラグイン (例: http://www.turnjs.com/ )を追加したいと考えています。そのようなすべてのプラグイン<img>は、URL を表示して画像をダウンロードできる raw タグを使用します。そのシナリオを回避したい (ユーザーがその画像をダウンロードすることを許可したくない) そのために、何らかの保護について考え始めました。

ここで、どうすればそれを行うことができるか、いくつかのヒントが必要です。

ページ全体を動的に生成することを考えていました。しかし、ページを非同期で読み込むと、URL を取得できます (例: FireBug 経由)

<img>...または、コンテンツを動的にロードする空のタグを使用しますか?

4

3 に答える 3

5

原則として、Web ページに資産として提供するものはすべて保護できません。画像、CSS / JS ファイル、Flash SWF、何を持っていますか。ブラウザがページをロードすると、レイアウト内のすべてのアセットがダウンロードされます。

これは静かに舞台裏で実行されますが、これらのファイルがクライアントのコンピューターに既に存在するという事実は変わりません。その時点から、狡猾なユーザーがあなたのファイルを取得するのを止めることはできません (ブラウジングの唯一の性質により、彼/彼女は既に持っているからです)。

于 2012-06-21T10:05:18.470 に答える
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のsrcURLからリソースを読み込もうとします。サーバーでそのリソースのリクエストを受け取った場合は、画像を配信し、トークンをすぐにキャッシュから削除します。キャッシュにトークンが見つからない場合は、「このリソースのダウンロードトークンはすでに使用されています」などのエラーページを表示します。

  3. 適切なキャッシュ制御ヘッダーを使用してイメージを配信するようにしてください(「キャッシュ制御のHTTP / 1.1ヘッダーフィールド定義」を参照)。これにより、ブラウザが画像をハードディスクに保存できなくなります。(注意:ブラウザは常にユーザーにとって最高のパフォーマンスを達成しようとするので、それを当てにしないでください。ただし、これはhttp-standardsによると必須のヘッダーであるため、ブラウザは画像のみを保存すると思います。メモリ内。)

このように、単に<img>'s srcをコピーしてダウンロードを試みるユーザーは、エラーページにたどり着きます。彼のブラウザは以前に画像のダウンロードにURLを使用したことがあるため、URLは無効になっています。

ちなみに、これはそれらのファイル共有とオンラインビデオストリームサービスのほとんどがダウンロードリンクを保護する方法です。リクエストとリソースごとに1つのトークンのみで、リソースが配信されるとすぐにトークンが削除されます。トークンがない場合、リソースはなく、リソースの実際のURLを明らかにする必要はありません。実際、「実際の」URLは必要ありません。

それでも、これは隠すことによるセキュリティです。ただし、80%の場合、これによりユーザーは画像をダウンロードできなくなります。

于 2012-06-21T11:51:34.240 に答える
0

とにかくすべての画像はブラウザによってダウンロードされます。したがって、ユーザーはそれにアクセスできます。これを制限したい場合は、おそらく何らかの暗号化でフラッシュを使用できます(私はフラッシュでうまく機能しませんでした)。

于 2012-06-21T10:08:40.997 に答える