2

画像がコピーされるのを防ぐための信頼できるソリューションを探しています。 私の顧客 (写真家) は、写真を購入せずにコピーすることを避けたいと考えています。

私はこれらのテクニックを組み合わせることを考えていました:


PHP自作有効期限

画像は、画像ファイルから読み取る php スクリプトから読み込まれます。リクエストでは、リクエストのタイムスタンプとファイル名をバンドルします。タイムスタンプが実際のタイムスタンプに非常に近い場合 (両方のタイムスタンプが同じサーバーで生成されるため、時間設定の問題はありません)、ページ生成時にリクエストが作成されます。例: 生成された html には、次のような img タグがあります。

そのため、ユーザーがソースコードから画像ソースをコピーしたい場合、ページ生成と画像リクエストの間に遅延があるため、image.php スクリプトは応答しません...

キャッシングなし

No cache ヘッダーを送信した場合、ブラウザーはクライアント コンピューターにファイルをキャッシュ/保存しないと思いますか?


これが基本的な考え方です。ユーザーは元のファイル名を持っていないため、直接アクセスすることはできません。このソリューションを使用すると、その場で透かしを入れたり、サイズを変更したりすることもできます

ユーザーは引き続きそれらを印刷できます。印刷画面には、クリップボードに入れるものとファイルを保存するものの 2 種類があります。

解決策はありますか、何らかのアクションが実行される前に、何らかのJavaScript側のオンキーダウンとプリントスクリーンタッチの検出、またはMacの組み合わせでのshift + alt + cmd + [1-4]と空白の画像について考えていました..これは可能ですか、多かれ少なかれ信頼性があり、どのように?

私が持っていた別の部分的なアイデアは、間隔または何らかのアクションでクリップボードをクリアすることでしたが、これは人々にとって迷惑であり、デスクトップに保存されたスクリーンキャプチャでは機能せず、すべてのブラウザーで機能しない可能性があります.

他のアイデアはありますか?

ここからどこへ行く?これは実際的な質問です。結局、人々が画面の写真を撮ったり、HDMI ケーブルを使用してデバイスをキャプチャしたりできることは知っています..しかし、真剣に、これはやり過ぎです。最高機密の機密文書...

4

5 に答える 5

1

表示されているものはすべてキャプチャできます。すべてのソリューションはサーバー側からのものです。透かしを追加するか、表示に小さな低解像度の画像を使用します。

于 2013-09-18T11:33:24.097 に答える
1

一般的な経験則は次のとおりです。ブラウザでアクセスできる場合、ユーザーはすでに完全なアクセス権を持っており、必要に応じてアクセスできます。オプションの例:

オプション1:

JavaScript による右クリックを防止します。

ユーザーの場合は機能しません:

  • JavaScript を無効にして、ページを更新します。
  • スクリーンショット ツールを使用します。
  • HTML を手動で検査し、img src を見つけます。

オプション 2:

画像を div の背景画像として配置します。

ユーザーの場合は機能しません:

  • スクリーンショット ツールを使用します。
  • HTML/CSS を手動で検査し、img src を見つけます。

オプション 3:

透かしや低解像度の画像を使用してください。

おそらくここでの最良のアプローチ。クライアントが自分の作品を保護したい写真家である場合、低解像度の画像を表示し、高解像度バージョンを購入するためのオプション/リンクを提供することが最善の方法かもしれません. 透かしを追加すると、写真家のロゴが中央にある写真をフレームに収めたくないため、訪問者が無料で画像を撮影することを思いとどまらせる可能性もあります.

于 2013-09-18T11:34:49.057 に答える
0

100%の防御はありません..

クライアントはいつでも、たとえば画像からスクリーンショットを作成できます。または、ブラウザのコードインスペクタで画像へのリンクを取得できます。

透かしを追加することが最善の解決策です。

于 2013-09-18T11:37:27.373 に答える
0
  1. 写真家は主に高品質の写真を撮っているので、Web サイトに低品質の画像を表示して、「デモ」か何かを書いてみませんか。
  2. フラッシュを使用して、ユーザーがそれらをコピーできないようにします。
  3. 画像を base64 にエンコードし、canvas または svg で表示します。
于 2013-09-18T11:35:01.067 に答える