img
タグを介して外部画像を含めることで、サイトにどのようなセキュリティホールが表示される可能性があり、それらを回避する方法は?
私は現在、送信時に拡張子とmime-type
画像(URL
送信後に変更可能)のみをチェックしURL
ており、属性に入れる前にサニタイズされていsrc
ます。
ここでは、危険にさらされている人を区別する必要があります。
URLを保存するだけで、サーバーに画像をアップロードしない場合、サイトはおそらく安全であり、潜在的なリスクはサイトを表示するユーザーにあります。
本質的に、あなたはブラウザメーカーの信頼性に信頼を置いています。問題はないかもしれませんが、ユーザーの1人が使用しているブラウザに、悪意のあるコードを含む画像を誤って解析するというセキュリティホールが発生した場合、その代金を支払うのはユーザーです( GIFARは興味深いかもしれません)。
ブラウザーの製造元が安全なソフトウェアを作成することを信頼するかどうか、およびユーザーが特定のブラウザーのエクスプロイトを含む可能性のある画像にURLをアップロードしないことを信頼するかどうかにかかっています。現在安全である可能性があるものは、次のリリースで安全ではない可能性があります。
公開される可能性のある主な穴は、破損した画像がブラウザ内でバッファオーバーフローを引き起こし、任意のコードが実行される可能性がある穴です。
画像を<img>
タグに入れるだけの場合、代替のMIMEタイプの送信に関連する脆弱性はないはずですが、一部のWebブラウザー開発者の愚かさを過小評価することはありません...
もちろん、データのチェックを行っていないため、データは何でもかまいません(リモートサーバーによって報告されたmimeタイプは、必ずしも真実を示しているわけではありません)。さらに、あなたが言ったように、あなたが提出後にそれを見ることは決してないので、リモートサーバー上のデータは変更される可能性があります。
そのため、リンクを<img src = "..." />とすると、ブラウザが画像処理に持つ可能性のある脆弱性が悪用される可能性があります。
URLを「サニタイズ」しても何の役にも立ちません。「悪い」画像を指すリンクを送信した人は、自分のサーバーを攻撃することはありません。