我有這樣的困境很多次 - 我希望一次又一次地調整我腦海中的答案。Php - PRO和CON流VS.寫/緩存
在創建的PHP文件,如* .zip文件,* PDF或任何其他PHP給你兩個操作選項:
寫入到磁盤中。
流與頭直接下載。
事情要考慮的是:
- 安全性(通常)
- CPU和服務時間爲文件
- 文件的完整性
- 文件更新
- 任何其他考慮,我沒有列出。
一個實際的例子:
Let's說,我有一個網站下載一個ZIP打包帶圖像。
如果我將zip壓縮 - 它顯然會花費CPU(和時間)。
如果我寫磁盤 - 它可以是安全問題(假定有人能「爬行」的網站,發現該zip文件夾或以某種方式文件,批量下載全部)
如果我寫磁盤,我會還需要檢查zip文件中的文件是否應該更新,另外我還要驗證文件的完整性。無論如何 - 我想聽聽人們在哪些情況下,哪些是最佳實踐或其他洞察力的首選方法。
你看 - 我已經學會了一些東西 - 我很笨,使用內部CRC - 這需要每次花費CPU打開文件。我使用哈希追加到文件名使它更經濟。你能詳細闡述一下關於安全的「做對」部分 - 我應該考慮什麼? – 2012-03-29 02:24:45
只需不要公開訪問該文件。僅僅因爲你將它寫入磁盤並不意味着任何人都可以下載它。只有將它寫入可公開訪問的webroot *中的磁盤時,情況纔是如此。你可以簡單地把它寫到webroot之外的磁盤上,解決問題。 – deceze 2012-03-29 02:30:04
這是真實的,條件是每個有權訪問的人都可以自由下載所有文件。但是如果我需要在文件到文件的基礎上限制下載呢?只是在權限上提供ONE鏈接將無法解決此問題(除非我錯過了某些內容) – 2012-03-29 02:34:36