web-dev-qa-db-ja.com

ファイルの表示を許可しながら、ファイルのダウンロードを防止する

クライアントがアップロードするドキュメントをダウンロードするための、顧客用のログイン領域を備えたサイトがあります。クライアントがダウンロードできるようにすることは禁止されているが、ユーザーがファイルをダウンロードできない場合は、ログイン領域に表示することが許可されている「機密」ドキュメントを入手しました。

明らかに、情報が画面に表示されるとすぐにそれをキャプチャする方法がありますが、ファイル>保存(または右クリック>名前を付けて保存)のようなオプションがない限り、それは問題ないと思います。情報をコピー/貼り付けさえできない場合は、さらに良いでしょう。そのような何かをどのように達成できるか考えていますか?

3
user37714

複雑すぎない場合は、「スクリーンショット」を作成してページに投稿できます。画像は保存できますが、実際のテキスト/コンテンツは保存できません。

もう1つの小さなトリックは、透明なdivをその上に配置することです。これにより、技術に詳しくないユーザー向けの右クリックが無効になります。

getMeTheFile.phpを作成し、それを使用してファイルを取得することもできます。そのPHPファイルで、ページ全体にいるのか、直接開いているのかを確認します(右クリック->保存は直接呼び出しになります)。

これを100%止めることはできないと思います。いくつかの障害を投げるだけです。

3
Martijn

クライアントがアップロードするドキュメントをダウンロードするための、顧客用のログイン領域を持つサイトがあります。クライアントがダウンロードできるようにすることは禁止されているが、ユーザーがファイルをダウンロードできない場合は、ログイン領域に表示することが許可されている「機密」ドキュメントを入手しました。

残念ながら、少なくとも「ファイル」とは「アップロードされたコンテンツ」を意味すると仮定する場合、これは不可能な組み合わせです

インターネット上にあるものを表示するためそれを表示するために使用されるコンピューターmust最初のダウンロード何らかの種類のローカルメディアへのデータ(RAMにのみであっても)。ブラウザがデータをダウンロードできる場合、意欲の高いユーザーはダウンロードしたストリームをキャプチャして保存できます。 99%の確率で、おそらくそれよりも簡単でしょう。そのようなことを比較的簡単にするWeb開発デバッグツールが存在します。

指摘されているように、ロードブロッキングを配置することができます。ここにいくつかのアイデアがあります:

  • 右クリックをブロックしてコンテキストメニューを表示するJavascript。

  • 保存を許可しないFlashまたはJavaベースのレンダラー。

  • 表示要素の上にある透明な<DIV>要素(ただし、ドキュメント内のナビゲーションなどに影響する可能性のある詳細に依存します)。

  • HTTP Refererヘッダーをサーバー側で確認し、予想と一致する場合にのみデータを送信します。

  • HTTPSを使用して、おそらくクライアント証明書を使用して、ストリームスニッフィングを防止します。

  • 保護されたPDFにレンダリングし、それらのPDFのみを使用可能にします。

しかし、最終的には、これらはroadblocksになります。preventコンテンツをダウンロードすることはできません。コンテンツmustは、表示するために何らかの形でダウンロードされるからです。 。ユーザーが上記の対策をどのように回避できるかを以下に示します。

  • 右クリックをブロックしてコンテキストメニューを表示するJavascript。 Javascriptクライアント側を無効にするか、保護された要素で特定のマウスボタンを使用することを伴わない同じことを達成する何らかの手段を使用します。

  • 保存を許可しないFlashまたはJavaベースのレンダラー。 適切な倍率でレンダリングされたコンテンツのスクリーンショット。手動または自動で一緒に作成されます。また、ダウンロードしたデータストリームスニッフィングを使用してWiresharkやtcpdumpのようなパケットスニファー。

  • 表示要素の上にある透明な<DIV>要素(ただし、ドキュメント内のナビゲーションなどに影響する可能性のある詳細に応じて)。 Adblock PlusやFirebugなどのDOM変更拡張機能を使用して、問題の要素を削除または無効にします。

  • HTTPリファラーのヘッダーをサーバー側で確認し、予想と一致する場合にのみデータを送信します。 Wgetなどの外部リクエストでリファラーを明示的に設定できるユーザーエージェントを使用します(Cookieなどでも機能します)。

  • HTTPSを使用して、おそらくクライアント証明書を使用して、ストリームスニッフィングを防止します。 HTTPSストリームに対する従来の中間者攻撃。

  • 保護されたPDFにレンダリングし、それらのPDFのみを使用可能にします。 保護を尊重しないサードパーティのPDFビューアーを使用します(そのようなものが存在しない場合、おそらく誰かが比較的簡単に使用できるオープンソースのPDFビューアーがいくつかあります適切な知識があれば、保護フラグを無視するように調整してください)。

最後に、顧客と話し合い、顧客のニーズが実際に何であるかを正確に把握する必要があります。たぶん上記の1つまたは組み合わせで十分な保護が提供されます。ただし、を前もって伝える必要があります。表示はダウンロードを意味するため、表示を許可しながらダウンロードを防ぐことはできません。これがproblemは、特定のケースにおける顧客のリスク分析に依存する別の問題です。

3
a CVn

ドキュメントがPDFファイルである場合、またはPDFファイルに変換できる場合、コンテンツの印刷、コピー/貼り付け、または抽出ができないなど、ドキュメントの使用を制限するオプションがいくつかあります。それ。これらの保護されたPDFを作成するには、おそらくAdobeまたはFoxitからアプリケーションを購入する必要があります。

0
ZippyV