2016-04-18 41 views
0

我們必須在我們的web應用程序中實現功能用戶配置文件圖片上傳。用戶可以上傳他的個人資料圖像。圖片上傳安全 - 用戶配置文件

上傳圖片後,它將被保存到DB2 DB中,並且它只會呈現給登錄後上傳圖片的用戶。 技術棧 - > J2EE,AIX,DB2。

我們從我們的安全部門得到了一個奇怪的抱怨,認爲這個功能需要刪除,因爲用戶可能會上傳病毒,這會感染服務器!

我不明白用戶如何上傳病毒,在一天結束時病毒是需要執行的程序,對不對? 第二件事情是UNIX-AIX平臺,即使用戶上傳了惡意軟件,服務器也不會被感染,對吧? 最後一件事情是,在JS文件上傳而不是圖片的情況下,用戶可能會被XSS感染,但是我可以看到,在我們的案例中,這是無效的,因爲只有用戶可以上傳圖片,並且它會呈現只對用戶..

我的理解是正確的嗎?

+0

您使用的是什麼圖片上傳? – RussellHarrower

回答

0

不,實際上可以隱藏圖像文件中的可執行代碼。 當用戶渲染圖像時,根據服務器配置的不同,可能會執行圖像中的代碼。 例如見http://hackaday.com/2014/11/15/hiding-executable-javascript-in-images-that-pass-validation/ 而在谷歌搜索GIF可執行文件,PNG可執行等

我見過的概念,允許運行Windows可執行這樣http://www.codeproject.com/Articles/9791/Hiding-EXE-Data-Within-GIF-Data,批處理命令和其他的東西爲Linux(甚至RM證明 - fr *),php代碼和許多其他。

您必須驗證圖像,或確保圖像在渲染前轉換爲安全格式。

+0

1)它是用戶配置文件圖像,所以我不希望用戶會上傳和執行文件損壞他的機器。因爲它只會爲他提供。 2)技術是j2ee不是php,這會使我有所作爲3)你提到我們需要驗證圖像或確保圖像在渲染前轉換爲安全格式,該怎麼做? – user1511524

+0

1.該文件並非完全是爲了傷害他的機器而創建的,該文件可以用於擴展權限或在服務器上執行某些操作。 2.不,它沒有區別。 java也在服務器端執行。這些是你可以檢查以驗證這些東西可能與Windows和JavaScript的鏈接,但這並不意味着它不能使用相同的技術來實現類似的目標在unix/ruby​​/asp.net/java2ee/ 3 。最簡單的方法是加載一個已經有內置的圖像庫,或者學習如何處理圖像的內容並進行渲染。 – bns