2017-04-12 75 views
0

有一個從網站到我的網站使用curl/fopen的zip文件的請求。當請求到來時,我的站點中的特定php方法代碼會在請求的url中獲取所有查詢字符串變量值,然後對這些請求進行各種檢查以驗證請求的有效性(有某種我不想要的檢查寫出於安全原因),然後下面的代碼回覆zip文件最後 -正確的方法來響應一個zip文件的請求

header("Expires: 0"); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="file name here"'); 
    header('Content-Length: '.filesize("/home/ttcc/content.zip")); 
    header("Cache-Control: maxage=1"); 
    header("Pragma: public"); 
    header("Content-Transfer-Encoding: binary"); 
    ob_clean(); 
    flush();    
    if (!readfile("/home/ttcc/content.zip")) echo "some messages"; 
    exit(); 

該代碼的作品,但,這是正確的方式來響應一個zip文件?它有任何故障或安全漏洞嗎?

回答

0

如果在發送文件作爲響應之前不需要任何額外的計算,則最好使用Web服務器來達到此目的。 Nginx將是一個很好的選擇來提供靜態文件。

所以請求不應該傳遞給PHP,並由Web服務器本身處理,如圖像和其他靜態文件。

如果您需要檢查訪問權限或針對同一請求的不同文件的響應,您可以使用您的代碼並在其之前進行所有計算。通過PHP來實現它是非常簡單和方便的解決方案。

+0

實際上,在另一臺服務器上託管文件並不安全,因爲這是一個商業文件,不太瞭解ngix。 –

+0

文件將保存在您的服務器上。我想,你使用'Apache'(httpd)和PHP來運行你的web服務。所以'Apache' **是一個Web服務器,就像'Nginx'一樣,它只是用來響應HTTP請求的軟件 – wormi4ok

相關問題