0

ユーザーが自分の 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 としてストリームをバイト配列 (後でデータベースに保存されます) に書き込むと、おそらくこれが修正されます。

4

1 に答える 1

0

あなたのサイトに写真をアップロードする機能を使用して人々がプログラムや他の情報を渡すのを避けるために、あなたは2つの主要なステップを行うことができます。

  1. 画像を読んでコードと一緒にもう一度保存し、他のものを削除します。
  2. 各画像のサイズを論理数に制限します。

誰かが悪いコードをアップロードしてサーバー上で実行することを避けるために、何かを実行する権限のない分離フォルダーを保持します。詳細については、以下をご覧ください。

私はハッキングされました。AspxSpyと呼ばれるアップロードされた邪悪なaspxファイル。彼らはまだ試みています。それらをトラップするのを手伝ってください‼</a>

また、同じテーマに関する一般的なトピック:侵入テスト用のASP.NetWebサイトの準備

于 2013-02-27T16:29:18.473 に答える