2011-02-09 22 views
8

私はこの質問を2回は私が思っていますが、これは私がこれに近づいて初めてです。私はユーザーがファイル(.pdf、.doc、.exl、.ppt、.png、.jpg、.gif)をアップロードしてダウンロードできるようにする予定です。安全なPHPファイルアップロードスクリプト

これらのヒントで十分でしょう:

http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/

また、私が利用できるスクリプトは、私はPHPに新しいです、そこにあります。

+1

どのようなスクリプトですか?私が見ているのは、適切な取り扱いのためのいくつかのルールです。 –

+0

申し訳ありませんが、チュートリアルを意味します。 – AAA

+1

ヒントは私にとってうまく見えますが、あなたの特定の要件に依存するものもあります。\ setup –

答えて

23

後半応答は、しかし、私はあなたのスクリプトがこれに基づいて行われるべきだと思う: http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

それはセキュリティのすべての側面をカバーし、すべての有効なポイントを説明します。私はこれが役立つことを願っています

編集:上記のリンクは死んでいます、here is a cached version of that articleです。また、PHPに慣れてい未来の読者については、

+0

これは素晴らしいガイドです – CrandellWS

+0

これはより多くのupvotesを値する。 –

+4

これはデッドリンクです –

3

数百万のファイルアップロードスクリプトがあります。 This oneは他のものより悪くありません。

png以外のファイルをアップロードすることによる「保護」は機能しませんが(ファイルの名前のみがチェックされます)。

ファイルをアップロードすることは非常に安全です。他の人には、特定の種類の攻撃に対してサーバーを開くようにダウンロードする可能性があります。あなたは二つの重要なポイントを言及していない参照記事:

  • 任意のユーザーにサービスを提供しませんが、あなたのWebページと同じドメインからファイルを提供します。ダウンロード用に別のドメインを用意してください。こうすることで、FlashアニメーションやHTMLのアップロードを管理していてもドメインがクロスドメイン攻撃を受けることはありません(example.orgのドメインがアプリケーションにある場合、ダウンロードなどのユーザーコンテンツを提供する必要があります)。 example.com);
  • は、常に適切に管理されたヘッダーを持つアップロードされたファイルを提供します。
+0

アップロードの危険は、プログラマがアップロードしたファイルをドキュメントツリーに保存し、接尾辞(* .php)も内容もチェックしないことです。いったん完了すると、悪意のあるユーザーは管理されていないスクリプトをサーバー上で実行できます。 Yikes。ファイルアップローダーは、ファイル名と内容を常にチェックして、ファイルがプログラマーが期待したものであることを確認する必要があります。 – JBH

+0

@JBHそして、このコメントは私の答えにどのように結びついていますか?... – fdreger

+0

あなたの答えは、「ファイルのアップロードは非常に安全です。あなたのサーバーを特定の種類の攻撃"私は例を挙げました。 – JBH

8

良いガイドを言及し、ふてくされて私が最初にこの答えを読むことをお勧めしますお勧めの読み取りであるhttps://stackoverflow.com/a/7065880/1815624でリッキーの答えで述べたガイドが、読む前に:

https://security.stackexchange.com/a/32853/31943

その後にリッキー言及ガイドを読む:

http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

さらにセキュリティが必要な場合は、インターネットからの切断を検討する必要があります。 :P