2013-04-26 72 views
0

我試圖做一個接受光柵圖形和矢量圖形文件(它可以是:JPG,GIF,PSD,PNG,SVG,EPS,AI,CDR,PDF和其他),我想避免惡意文件。安全的HTML + PHP窗體上傳圖片和矢量文件?

我發現的選項:

1)自定義功能擴展過濾:好像不是ellegant - 衆多擴展型,也許我可以忘記一個 - 和它似乎並沒有太大的安全。或者是?

2)getimagesize function檢查文件類型:它不適用於矢量文件 - 至少這是我的理解。或者我錯了?

我沒有在網上找到任何關於柵格+矢量文件格式的頁面。該怎麼辦?

回答

0

我的解決辦法:

的PHP文件接收日上傳的文件:

// get the name of original file  
$imagem = $_FILES['arquivo']['name']; 

// handle string to get extension in lower case. I think it is not a very secure handler. 
$ext = strtolower(substr($imagem, strrpos($imagem, '.') + 1)); 

// array of extensions the validation accepts 
$valid_ext = array ('ai', 'bmp', 'cdr', 'eps', 'gif', 'jpeg', 'jpg', 'pdf', 'png', 'psd', 'svg');  

// checking 
if(in_array($ext,$valid_ext)){ 
    // file is ok. Do something 
} 

我tryed做首先檢查啞劇與file types$file_infofinfo()getimagesize()但任何這些行之有效。我在識別EPS和CDR擴展時遇到了一些問題。它返回「application/octet-stream」,它是未知擴展的MIME類型文件。在我的研究中,我明白那是基於OS發送Mime文件類型信息的瀏覽器,所以我們有一個問題,每個表單用戶可以爲相同的擴展名具有不同的Mime文件類型。

我也明白PHP有一個標準文件來標識Mime,但我無法處理該文件來添加有關EPS和CDR文件的信息。因此我不得不使用那個字符串檢查解決方案。