我有一個ASP.NET Web應用程序,允許用戶將他的PC上的文件上傳到SQL Server數據庫(稍後用於爲標籤生成圖像)。有沒有一種「簡單」的方式來測試.NET中的圖像,以驗證它在保存之前不包含任何惡意內容?在上傳到ASP.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();
創建,如果它不是一個圖像TestBitmap失敗(例如,如果文件名是一個文本文件的名稱),但顯然這並不能阻止的文件是一個帶有惡意代碼的圖像,它作爲圖像加載到它上面,因此將其保存爲MemoryStream,然後將該流寫入字節數組(稍後保存在數據庫中)據說可以修復此問題。
我看不出有任何的問題 - 既然你都準備好給出答案。 – Aristos 2013-02-27 16:07:57
以下是問題:我所做的是否足夠,還是應該做其他事情? – 2013-02-27 16:20:39
對我而言,聲音就是找到了,用你的代碼重新保存圖像。之後,您還可以限制圖像的大小。 – Aristos 2013-02-27 16:24:15