2017-03-25 89 views
2

我正在一個網站上,我允許用戶上傳圖像到服務器。爲了使file_put_contents()獲得正確的權限,我必須將服務器上的用戶更改爲www-data(Apache服務器的當前用戶)。正確的目錄執行權限file_put_contents()

我只是想知道這可能會產生什麼樣的安全問題,任何有更多經驗的人都可以給出更深入的解釋或更安全的替代方案?

回答

0
  1. 上傳到www上面的不同目錄。如果攻擊者可以上傳任何可執行的文件,而不能執行該文件......如果執行它們可以執行任何操作。

  2. 將上傳的文件名更改爲其他名稱。不要將文件保存爲用戶提供的名稱。

  3. 將文件權限更改爲只讀。

  4. 檢查文件的MIME與$ _FILES [ 'DFJK'] [ '型']類型不是......用它來檢查MIME類型

    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $_FILES['soup']['tmp_name']); 
    

    因爲

    $_FILES['filename']['type'] 
    

    可以由用戶改變。

  5. 也檢查文件大小,因爲它們會上傳非常大的尺寸。然後你的服務器開始拒絕服務模式。

  6. 也可以使用htaccess停止目錄的可執行權限。

    RemoveHandler .php .phtml .php3 
    RemoveType .php .phtml .php3 
    

    php_flag engine off