ユーザーが自分の PC から SQL Server データベースにファイルをアップロードできるようにする ASP.NET Web アプリケーションがあります (後でタグのイメージを生成するために使用されます)。.NET 内でイメージをテストして、保存する前に悪意のあるものが含まれていないことを検証する "簡単な" 方法はありますか?
現在、私はこれを使用しています:
MemoryStream F = new MemoryStream();
Bitmap TestBitmap = new Bitmap(Filename);
TestBitmap.Save(F, System.Drawing.Imaging.ImageFormat.Png);
int PhotoSize = (int)F.Length;
Photo = new byte[PhotoSize];
F.Seek(0, SeekOrigin.Begin);
int BytesRead = F.Read(Photo, 0, PhotoSize);
F.Close();
画像でない場合 (たとえば、Filename がテキスト ファイルの名前の場合)、TestBitmap の作成は失敗しますが、明らかに、悪意のあるコードが追加された画像であるファイルが画像として読み込まれるのを止めることはできないため、保存します。 MemoryStream としてストリームをバイト配列 (後でデータベースに保存されます) に書き込むと、おそらくこれが修正されます。