我需要一個安全的解決方案來存儲較大(未知)數量的私人圖像只能被某個用戶訪問。這個問題並沒有包含像登錄,會話或類似的東西 - 只是圍繞圖像和它們被存儲。安全地存儲私人圖像
我將首先解釋我正在努力實現的目標,然後繼續我一直在想的事情。
私人圖片只能由某個用戶在訪問我的網站上傳和他/她提供的,並上傳瀏覽圖片
用戶登錄。該圖像只能由該用戶訪問 - 因此需要登錄。當請求查看圖像時,將通過驗證用戶權限並從安全目錄中提取實際圖像的PHP腳本處理呈現。
我所知道的,假設和思考。
索引圖像,便於同治的
是被上傳在管理數據庫收錄每一個形象,即
Title: "Me on a scooter"
User: {0E4A759A-CC31-4B0D-97E1-EEFB28F0BF86}
Filename: asuohLAFUUHJSFUhaSGFUOAHSGUA
Extension: .jpg
當用戶想要觀看圖像時,服務器驗證和檢查用戶是否確實是圖像的所有者。
從圖像
讓公衆遠離我讀過一些文章解釋說,這是很好的做法,以保持文檔根目錄以外的文件。雖然我理解這個概念,但我並不完全明白如何在實踐中做到這一點。我的假設:
/var/www/myFolder/ //here's where the html files are stored
/mySecureFolder/ //here's where the content are stored outside of the root, or on a higher level
所以每當服務器應該顯示的圖像看起來它在/ mySecureFolder /並檢查文件,使其用戶之前就存在。
假設#2
創建和放置一個.htaccess文件阻止所有人,但本地主機中/ mySecureFolder /是我應該做的,讓別人什麼。
問題#1 PHP的進程正在運行作爲用戶WWW的數據,它是安全做出/ mySecureFolder/WWW的數據的所有者組?
假設#3 - 文件模式
爲了讓沒有,但一個特定的系統用戶,我應該有0770 recursivly文件模式的文件夾,只允許所有者用戶和所有者組的讀,寫和執行權限。
問題2
是使用的.htaccess以拒絕將安全文件夾的根目錄(/無功/網絡/ MyFolder文件/)文件夾外的任何人訪問,但本地主機相同呢?
假設#4過度破壞
加密存儲在文件系統中的每個圖像被矯枉過正和 - 如果目錄權限設置正確 - 不必要的。
我的攻擊場景只有外部攻擊,黑客無法通過SSH訪問服務器,也無法通過服務器實際訪問。因此,可能的攻擊是來自我創建的代碼的外部攻擊 - 例如注入等。
我希望可能的答案可能會適用於未來的旁路,因此,如果你能幫助我排除這個問題的格式,以確保它儘可能清楚,我將不勝感激。
因此,將目錄的所有者設置在/ www www-data之外是安全的嗎? – Alex
是的 - 因爲沒有人可以通過您的應用程序「獲取」該文件夾。另外 - 你沒有真正的選擇 - 你不能將文件夾「CHMOD」給你的應用程序的用戶 - 因爲該用戶不是你的操作系統的一部分 - 他們是你的應用程序的用戶。您的操作系統的用戶是www-data – Laurence
@Alex需要一個相關的CHMOD和所有者,以便Web服務器進程,並且PHP有權讀取這些文件。 – MrCode