2013-02-27 45 views
0

我有一個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,然後將該流寫入字節數組(稍後保存在數據庫中)據說可以修復此問題。

+0

我看不出有任何的問題 - 既然你都準備好給出答案。 – Aristos 2013-02-27 16:07:57

+0

以下是問題:我所做的是否足夠,還是應該做其他事情? – 2013-02-27 16:20:39

+0

對我而言,聲音就是找到了,用你的代碼重新保存圖像。之後,您還可以限制圖像的大小。 – Aristos 2013-02-27 16:24:15

回答

0

爲了避免人們通過程序和其他信息使用上傳照片到您的網站的能力,您可以執行兩個主要步驟。

  1. 閱讀並再次保存圖像與您的代碼刪除任何東西elst。
  2. 將每個圖像的大小限制爲一個邏輯數字。

爲了避免一些人上傳不好的代碼並在你的服務器上運行它,你需要保留一個無法運行任何東西的隔離文件夾。更多信息是關於上:

I've been hacked. Evil aspx file uploaded called AspxSpy. They're still trying. Help me trap them‼

與上同樣問題的一般性話題:Preparing an ASP.Net website for penetration testing

相關問題