2010-08-27 58 views
0

我正在計劃在PHP中創建www門戶,在那裏將存儲許多圖片。我決定將圖片存儲在服務器(不是數據庫)中的目錄中以實現性能。有些圖片可以從互聯網上的所有用戶訪問,有些圖片(如果用戶設置爲私人的)不會根據會話ID。這個問題的最佳解決方案是什麼?性情很重要。我使用一些mod_rewrite或將私人文件移動到公共目錄以外的其他目錄?如何在服務器上的文件中存儲圖片以保護WWW中的某些人的隱私

約翰

回答

0

有兩種選擇:

  1. 存放在站點根的一些公開訪問的文件夾中的圖片,命名文件,該文件名不能被猜到(隨機生成和非順序),並確保目錄索引被關閉。只提供用戶有權查看的圖像的鏈接。如果他們不與他們的私人照片分享鏈接,那麼人們很難意外(或故意)在私人照片中絆倒。

  2. 將圖片存儲在您的網站根目錄之外,並通過腳本進行服務,該腳本會根據會話進行身份驗證。有怎樣的圖像到內存中,並輸出它的imagejpeg頁面PHP.net

+0

廣告1. 似乎是最快的。但是有沒有一些互聯網機器人可以把內容拿出來?可能是這樣一個文件md5的名字是什麼?或更復雜的東西? Ad.2 最安全的,但似乎PHP必須採取內容,檢查,處理(頭,身體),並儘可能拋出圖片。看起來像吃資源。 – john 2010-08-27 14:15:53

+0

@john雖然Menalto Gallery2使用[2],並非常滿意。特別是因爲HTTP條件獲取緩存 – 2010-08-27 14:25:25

+0

@john機器人只跟隨鏈接。如果您沒有提供除認證用戶之外的鏈接,機器人將無法找到這些文件。如果你擔心人們通過暴力破解找到文件,請將你的文件名變長,並在圖像目錄中查看你的日誌以獲取大量的404。 – meagar 2010-08-27 16:23:24

0
  1. 上閱讀到瀏覽器不允許用戶以熱鏈接到這些圖像的例子。忽略這意味着你會讓freeloader從其他合法用戶那裏竊取網絡資源。
  2. 確保這些圖像不在Web可訪問的路徑中。
  3. 找到節流的方法。您不希望一個用戶佔用應該分配給其他用戶的帶寬。
0

存儲您的wwwroot外部的私人文件,只能通過php腳本訪問,它檢查訪問權限並轉發到403頁面或通過例如readfile()服務器映像。

相關問題