web-dev-qa-db-ja.com

PDFブラウザー2020のドキュメント

ユーザーがファイルのリンクまたはサムネイルをクリックしてブラウザーでドキュメント(PDF)を表示できるようにするプロジェクトがあります。彼らはそのファイルをダウンロードすることができるでしょう。 PDFファイルに関連する脆弱性の調査を開始したばかりですが、これまでに収集できたものは次のとおりです。

PDFには、エクスプロイトを作成したり、他のエクスプロイトを識別したりする可能性のある実行可能コードを含めることができます。 PDFはこの点で一意ではありません。

悪意のあるPDFアクションの発生から保護するために、ブラウザはサンドボックス内のすべてのPDFファイルを開きます。これらのサンドボックスローカルビューアよりも安全です。サンドボックスで開くブラウザPDFファイル:

  • Chrome:はい
  • Firefox:はい
  • 縁 : ?
  • IE:?
  • サファリ:?

PDFファイルをWebルート外のファイルシステムに保存する予定です。ファイルのメタデータはデータベース内でインデックスが作成されます。

通信はSSLを介して行われます。

質問:

  1. PDFファイルをブラウザーのサンドボックスで開くと、ブラウザーでPDFを表示することによるリスクがなくなりますか?
  2. (セキュリティの観点から)PDF)に記載されている使用例で使用するより理想的なファイル形式はありますか?
  3. PDFドキュメントを表示するときに、どのタイプのサーバー側検証を実行できますか、または実行する必要がありますか?
3
FamousAv8er
  1. ブラウザでのPDF

    ブラウザがあなたのために物事を安全にすると仮定すると、あなたの側で(多かれ少なかれ)何もするべきではありません。あなた自身がブラウザを実装しているのでない限り。

    しかし、私が目にしたのは、そのようなファイル形式(特にMS-Word/Execlファイル)からスクリプトを削除するプロセッサです。次に、少なくともクライアントのマシンでは何も実行しないことを知っています。もちろん、その結果、ファイルは作成者の予想どおりに表示されない場合があります。

  2. 他のフォーマット

    インターネットでは、HTMLを使用します。ただし、クライアントがデータを印刷する必要がある場合は、PDFファイル(プリンターで期待どおりに表示される可能性が高いため))を用意することをお勧めします。

    それ以外の場合、ほとんどすべてのファイル形式にスクリプトが含まれる場合があります。たぶんRTFはその分野で制限されていますが、私は年齢でその形式を確認していません。

  3. PDF検証

    確かに、ファイルがPDFファイルであることを確認してください。そうでない場合は、拒否することができます。そのテストでは、fileコマンドラインは:

    file <your-file>.pdf
    

    ファイルに特定の拡張子(.pdf)は1ビットでも役に立ちません。

    最善の方法は、サーバーがファイル全体を読み取ることです。たぶん、PDFパーサーを介して実行し、.txtファイル。それが機能する場合、ファイルはPDFであり、他のいくつかのランダム形式ではないと想定できます。

3
Alexis Wilke