2013-03-16 89 views
3

我有上傳文件到我的服務器腳本這裏是我的代碼PHP文件上傳安全

當用戶上傳一個文件到服務器

  1. 我的腳本重命名文件,並保存詳細信息在分貝。

  2. 我將文件放在web根目錄之外。

那麼我的方法是否安全?

+0

請不要使用mysql_ *功能那些deprricated檢查這個http://meta.stackexchange.com/a/171640/176320 – 2013-03-16 05:10:27

+0

@ranjith你可以發佈代碼的和平,以便我可以使用它嗎?因爲它對我來說工作得很好。 – 2013-03-16 07:14:25

回答

1

你應該做進一步的輸入驗證你的文件,如:

-check文件大小

- 檢查文件類型與一個「文件類型識別器」

-check內容頭

您還可以檢查的最佳實踐文件上傳這裏: https://www.owasp.org/index.php/Unrestricted_File_Upload

決不日運行e服務器上的文件。

檢查內容類型(我從來沒有做過的BTW這個我自己),你可以嘗試像soemthing:

$file = "path2file"; 
$finfo = new finfo(FILEINFO_MIME); 
$type = $finfo->file($file); 
if(in_array($type,array("application/zip", "application/x-zip", .. whatever content types are ok...))) 
    //you passed 
+0

請查看它已經檢查了擴展名$ ext = explode('。',$ files ['name'] [$ i]); $ ext = strtolower(end($ ext));然後我也檢查文件MIME類型我存儲數據在數據庫中。 – 2013-03-16 05:11:17

+0

我做了我的壞事,我更新了我的答案後,我也看到了 – Tucker 2013-03-16 05:12:11

+0

你可以告訴我例如內容頭?所以我可以實現它 – 2013-03-16 05:14:16

1

是的,你的方法是安全的。因爲所有文件都將上傳到Web根目錄之外。沒有人可以通過URL直接訪問它。