2012-04-17 36 views
3

我有一個網站,顯示用戶提交的圖像。我很擔心 某些智能上傳的圖像可能會利用瀏覽器渲染引擎中的0天漏洞。此外,我想清除元數據(如EXIF數據)的圖像,並嘗試以無損方式進一步壓縮它們 (有幾個用於PNG和JPEG的命令行工具)。圖像消毒庫

考慮到上述情況,我的問題如下:是否有一些適合上述場景的C/C++ 庫?即使解析的 全流水線 - >清洗 - >消毒 - >壓縮 - >寫 沒有任何單一磁帶庫提供,我至少可以實現 解析 - >清洗 - >消毒 - >寫作管道(不壓縮)在支持JPEG/PNG/GIF的 庫中?

回答

5

您的要求是不可能實現的:如果您使用的圖像閱讀庫之一存在0天的漏洞,那麼當您試圖解析和清理傳入文件時,您的代碼可能會被利用。一旦圖像被接收,「預先處理」你就可以提前開始移動而不是稍後。

唯一有用的是解析和清理沙箱中的傳入圖像,至少如果存在漏洞,它將包含在沙箱中。沙箱可以是一個單獨的進程,作爲非特權用戶在chroot環境(或虛擬機,非常偏執)中運行,只有一個接口只包含字節流,消毒圖像。

衛生處理本身就像使用ImageMagick打開圖像,將其解碼爲柵格,並以標準格式(例如PNG或JPEG)重新編碼和發射它們一樣簡單。請注意,如果輸入和輸出都是有損格式(如JPEG),則此轉換將是有損的。

+0

是的,我的想法是在密封環境中運行消毒。理由是我完全控制了衛生,並且可以保護自己和我的用戶。 – 2012-04-18 13:38:20

+0

「,其接口只包含字節流,消毒圖像。」 這很重要......因爲人們已經報告ImageMagick中允許遠程執行代碼的最新漏洞......您需要限制此沙箱中的可用內容。即使簡單的事情,例如允許出站http流量,也可以讓您接管主機,以用於諸如DDOS攻擊之類的事情。 – cphoover 2017-07-17 15:50:54