[ASP.NET]防止上傳圖片夾帶不良的東西

最近小喵也遇到需求需要給外部的使用者進行上傳圖片,上傳圖片最怕的就是一般惡意的使用者,將別的檔案改附檔名,然後上傳,進行惡意的行為(例如轉址到不良網站),或者將不良的資料附加在一般圖檔的後面,除了圖檔變大外,該圖檔被瀏覽的時候,可能有些惡意的行為出現。為了解決這個問題,剛好在網路上看到一個相關的討論,小喵將之筆記下來,並特別與大家分享。

 

緣起

最近小喵也遇到需求需要給外部的使用者進行上傳圖片,上傳圖片最怕的就是一般惡意的使用者,將別的檔案改附檔名,然後上傳,進行惡意的行為(例如轉址到不良網站),或者將不良的資料附加在一般圖檔的後面,除了圖檔變大外,該圖檔被瀏覽的時候,可能有些惡意的行為出現。為了解決這個問題,剛好在網路上看到一個相關的討論,小喵將之筆記下來,並特別與大家分享。

 

解決方向

如何做這些惡意的行為不在此篇的討論地範圍,小喵這篇記錄下來如何因應之道,以備未來要處理時可以參考

方向一:依據上傳的副檔名,檢查檔案的前面幾個Byte

方向二:上傳後的檔案,用Stream讀入記憶體後,再另存為本來的檔案格式

 

相關的討論

相關討論與資訊請參考以下這幾篇

上傳圖檔Byte檢查:http://www.dotnetexpertguide.com/2011/05/validate-uploaded-image-content-in.html

請教判斷是否為真的圖檔的方法(藍色小舖)

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6)