2016-03-21 14 views
-1

私はPHPのWebアプリケーションを構築しており、画像のアップロードも含まれています。私は偽の画像のアップロードを防ぐことについて読んだ。しかし、偽の画像とは何ですか?また、サーバーを攻撃するためにどのように使用できますか?偽の画像のセキュリティの懸念/防止のアップロード

PHP関数getimagesize()を使用してファイルの拡張子を確認し、画像による可能性のあるすべての攻撃を排除すれば十分ですか?

+0

あなたが何を尋ねているのか分からないなら、まずそれを理解する方が良いかもしれません。それ以外の場合は、可能な答えが実際にあなたの質問に答えるかどうかはわかりません。 –

+0

ファイル拡張子をチェックしても、誰かが別のものをアップロードすることはできません。また、偽の画像について聞いたこともありません。その中に実行可能なコードを持つ画像のみ。これらは有効な画像ですが、画像内の実行可能コードを削除するために、画像を完全に再作成する必要があります。 –

+0

いいえ、 'getimagesize()'は十分ではなく、ファイル名の拡張子チェックは無意味です。悲しいことに、私はサーバーサイドのMIME検出でさえも非常に脆弱であるため、100%の信頼性の高い方法はないと思います。 – Narf

答えて

1

偽の画像の一例は、画像の代わりにPHPファイルをアップロードしてから、サーバーを騙して実行することです。この種の攻撃を防ぐには、ユーザーがサーバーにイメージを保存するために使用するファイル拡張子を選択したり、ドキュメントルートの外側にアップロードされたイメージを格納しないようにするなど、いくつかのオプションがあります(必要に応じてfile_get_contentsを使用して読み取ります)。

0

偽の画像がどのようなものであるかの良い説明については、@Chrisの説明を参照してください。

偽の画像の意図は、実行可能コードをサーバーに置くことです。ユーザーがアップロードしたイメージをドキュメントルートの外に保存することは良い考えです。もう一つの良いアイデアは、ファイルが本当にイメージかどうかを確認することです。おそらく

ファイルが有効なイメージであるかどうかを確認する最速の方法:詳細と例について

function isValidImage($file) { 
    return (false === exif_imagetype($file)) ? FALSE : TRUE; 
} 

チェックhttp://php.net/manual/en/function.exif-imagetype.php

+0

これはImagick例外を捕捉するよりも信頼できますか? :) –

+0

両方のオプションを比較することは決してありませんが、 'exif_imagetype()'は大きなメモリを消費せず、雷が激しくなっています。 – maxhb

関連する問題