1

ユーザーが画像を投稿するためのアップロードコントロールを備えたASP.NETフォームがあります。サーバー上で(Bitmapクラスを使用して)その画像をロードし、サイズを変更します。

ユーザーが悪意のあるファイルや影響を受けたファイルをアップロードするときにそれを行うことに危険はありますか、それともコードはある時点で例外をスローしてプロセス全体を停止しますか?

4

2 に答える 2

1

ハッカーが期待できる最善の方法は、バッファオーバーフローのエクスプロイトを使用することです。その後、悪意のあるコードをサーバーのメモリに書き込んでいます。しかし、私が読んだところによると、このようなことは安全でないコードを使用している場合にのみ発生する可能性があり、ビットマップは完全に管理されているため、安全に使用できると確信しています。

ただし、本当に賢いハッカーはビットマップをだまして、完全に有効な画像になる「カスタム」画像ファイルを作成できますが、将来の悪用を使用して、ブラウザで表示したときに損傷を引き起こす可能性のある「ヒッチハイカー」コードも含まれます。したがって、最も安全な方法は、アップロードされた生のファイルではなく、ビットマップ自体をディスクに保存することです。つまり、HttpPostedFileのSaveAsメソッドの代わりにbitmap.Saveメソッドを使用します。このように、ビットマップはコードをロードせず、訪問者が安全になるため、余分なコードは省略されます。

ちなみに、アップロードしたファイルをWebサイトのルートフォルダの外に保存し、「プロキシ」ファイルを作成してフォルダから読み取ることができます。この方法では、ユーザーは画像を直接参照できなくなり、使用する必要があります。プロキシファイル。これは、ある時点で権限メカニズムを追加する場合に役立ちます。たとえば、ユーザーAはユーザーBがアップロードしたものを表示できないようにする必要があります。

于 2010-10-29T23:45:22.147 に答える
0

私は...するだろう:

アップロードされたファイルが間違いなく画像であることを確認して、他の人が任意のものをアップロードできないようにします。ただし、おそらくそれはBitmapクラスでカバーされています。

アップロードしたファイルの名前を変更して、アップロードした人が自分で作成したファイル名を知らないようにします。

アップロードディレクトリに最小限の権限があることを確認してください。

アップロードディレクトリの内容がブラウザで表示されないようにしてください。

于 2010-10-29T12:38:34.230 に答える