あなたの友人が言及しているのは、単に画像を提供するだけでなく、ユーザーが提供した画像を具体的に提供しているのではないかと思います。ユーザー提供のコンテンツを提供するには、セキュリティ上の問題がいくつかあります。画像の場合、画像のアップロードを使用してWebサーバーにコードを実行させる方法はいくつかあります。よりよく知られているもののいくつかは次のとおりです。
- 「GIFAR」ファイル。基本的に、これはGIFファイルとjarファイルを連結したものです。GIFのインデックス情報が最初にあり、jarファイルのインデックス情報が最後にあるため、2つのファイルタイプを組み合わせることができ、結果は有効なGIFと有効なJARの両方になります。
- 複数のファイル拡張子。Webサーバーは、国際化などを可能にするために複数のファイル拡張子をサポートしています。たとえば、page.html.frという名前のファイルは、フランス語バージョンのページにマップされる場合があります。サーバーの構成によっては、拡張子がimage.php.jpgまたはimage.php.123のファイルがPHPスクリプトとして実行可能になる場合があります。
- バッファオーバーフロー。画像ファイル形式には通常、ファイルのサイズと形式を説明するヘッダーが最初に含まれています。サイズを過小評価すると、悪意のあるユーザーがバッファオーバーフロー攻撃を仕掛ける可能性があります。
これらの例はすべて、Webサーバーとしてコードを実行する機能につながります。サイトの機能にはファイルをアップロードする機能が必要ですが、URLから直接アクセスできないディレクトリにファイルを保存すると、ファイルの悪用が困難になります。同様に、WebサーバーのMIMEハンドラーではなくスクリプトを使用してそれらを提供することにより、画像が実行可能ファイルではなくデータのストリームとして扱われることが保証されます。
これだけのセキュリティがばかげているかどうかは、ユーザーの数、ユーザーに関して収集されたデータの性質、およびWebサイトの些細なことに依存します。少なくとも、攻撃者はユーザーを同期させる傾向があるため、ユーザーのパスワードを取得したいと考えています。パスワードがABC123であるサイトのユーザーは、おそらく電子メール、ソーシャルサイト、および銀行や金融のサイトで同じパスワードを使用します。パスワード以外に、ユーザーに関して収集するデータが個人を特定できるか、他の市場価値がある場合、または単に多数のユーザーがいる場合は、サイトがターゲットになると想定する必要があります。つまり、ユーザー提供の画像ファイルをより慎重に提供するか、それらを本当に適切に検証するか、またはその両方を行う必要があります。
imagemagickを使用することでセキュリティ上の懸念に対処できるかどうかについては、良い答えがありません。クイック検索で既知の脆弱性が多数見つかったため、少なくとも現在のバージョンを使用してください。既知の脆弱性の1つを悪用していなくても、心配する必要のあるファイルがimagemagickを爆破する可能性があることを忘れないでください。したがって、本当に優れたエラートラップを用意してください。