風險

2017-06-13 124 views
0

我也許問一個愚蠢的問題,但我想一定是我的應用程序是幾乎完成,我不想面對病毒的一些問題在未來風險

我有一個應用程序用angular2編寫,後端用java編寫。 人們可以更改他們的個人資料圖片。

從我的前臺我用base64編碼圖片,併發送一個帖子到我的休息api。

  • 服務器檢查的base64的大小和拒絕它,如果它達到一定的大小(但我也有2MB的maxPostSize在默認的Tomcat)
  • 基於64位,然後用庫net.iharder解碼該改造它在字節組 http://iharder.sourceforge.net/current/java/base64/

  • 一旦完成我檢查,如果該文件是一個圖象(及調整其大小以及)通過創建一個BufferedImage

    ImageIO.read(ByteArrayInputStream) 
    

    如果它不對應一張圖片,它將返回null所以我也沒有在這裏看到風險。

  • 一旦完成,我將圖片存儲在我的服務器中。

誰協商,圖像的配置文件將接收base64編碼圖像(相應於上載的一個),它會被顯示在一個基本

<img src="myBase64"/> 

只有JPG和PNG的任何輪廓被允許

我的問題是這樣的:如果一個人發送一個包含病毒的文件,我的服務器或最終用戶是否有任何風險?或者我是否安全使用ImageIO閱讀器。

在此先感謝

+0

存在針對標準圖像庫的緩衝區溢出攻擊。例如,PNG/JPEG標題以超出預期大小的方式寫入。 –

回答

1

如果存儲發送給您的任何東西,其發回不變,那麼任何事情都有可能發生。只是因爲ImageIO可以讀取圖像,並不意味着在那裏沒有任何妥協。但是,如果您調整圖像大小並使用它,那麼當您從原始圖像字節創建全新圖像時,幾乎沒有任何生存機會。 JPG和(我猜)PNG文件可以包含不是圖像一部分的元數據,並且這些數據可能是攻擊的載體。但是通過從原始圖像數據創建一個新圖像,您隱式地去除所有這些。

+0

對。它可以感染你自己的服務器,但不能感染你的客戶。 –