3

ユーザーが自分の PC からアップロードするか、リモート URL を参照して、Web サイトに画像をアップロードできる環境を想像してみてください。

いくつかのセキュリティ チェックの一環として、参照されているオブジェクトが実際に画像であることを確認したいと思います。

リモート URL の場合、もちろんコンテンツ タイプをチェックしますが、これは防弾ではありません。

ImageMagick を使用してタスクを実行できると考えました。おそらく ImageMagick.identify() メソッドを実行し、エラーが返されず、返されるタイプが JPG|GIF| などの場合。内容はイメージです。(簡単なチェックで、TXTファイルも正しく識別されていることに気付いたので、これらをブラックリストに登録する必要があります)

これを行うためのより良い方法はありますか?

4

3 に答える 3

1

おそらく、選択した言語に適したImageMagickの関数を介して画像をロードするだけで済みます。画像が適切にフォーマットされていない場合(つまり、美的特性ではなく、内部フォーマットの観点から)、ImageMagickが画像の読み込みを拒否してエラーを報告することを期待します。たとえば、PHPでは、画像の読み込みに失敗した場合、readImageはfalseを返します。

または、ファイルの最初の数百バイトを読み取り、予想される画像ファイル形式のヘッダーが存在するかどうかを判断することもできます。例:「GIF89」など。

于 2012-10-06T15:56:30.963 に答える
1

画像が圧縮可能な形式 (PNG、GIF) であり、zip 爆弾https://en.wikipedia.org/wiki/Zip_bombと同様の方法で構築されている場合、これらのチェックは逆効果になる可能性があります。

ftp://ftp.aerasec.de/pub/advisories/decompressionbombs/pictures/にいくつかの例があります (そのサイトについて特別なことは何もありません。減圧爆弾をググっただけです)。

もう 1 つの関連する問題は、SVG のような形式は実際には XML であり、一部の画像処理ツールは「10 億の笑い」攻撃の亜種になりやすいということですhttps://en.wikipedia.org/wiki/Billion_laugh

于 2012-10-07T07:39:53.727 に答える
0

元のファイルを保存しないでください。一般的に推奨されるアプローチは、常に画像を再処理し、完全に新しいファイルに変換することです。有効な画像ファイル(GIFARを参照)内で悪用された脆弱性が存在するため、これをチェックすることは無意味でした。

自分で書き留めておらず、自分でファイル名を選択していない画像ファイルを訪問者に公開しないでください。

于 2012-10-06T15:57:46.190 に答える