您好網站開發大師安全高效地存儲/提供網站圖片
安全存儲和提供圖片而不損害性能的最佳做法是什麼?
是否有可能將用戶圖像存儲在一個不可通過網絡訪問的文件夾中(可能更高和更早/ www?),並在用戶登錄頁面後按需提供?有一個用戶名和密碼訪問機制已經到位。
用戶不希望這些圖像可公開訪問。
我在Ubuntu上用php運行nginx。數據庫是mysql。
謝謝!
您好網站開發大師安全高效地存儲/提供網站圖片
安全存儲和提供圖片而不損害性能的最佳做法是什麼?
是否有可能將用戶圖像存儲在一個不可通過網絡訪問的文件夾中(可能更高和更早/ www?),並在用戶登錄頁面後按需提供?有一個用戶名和密碼訪問機制已經到位。
用戶不希望這些圖像可公開訪問。
我在Ubuntu上用php運行nginx。數據庫是mysql。
謝謝!
你可以使用一個php文件來提供這些圖像,並在服務之前做一些檢查。我會嘗試這樣的事:
<?php
if (/* YOUR CHECK HERE */) {
header('Content-Type: image/jpeg'); // Or whatever your content type might be
readfile('/path/to/file');
}
,你可以使用重寫規則的,使你的PHP文件的調用看起來像真正的圖片:
rewrite /img/users/pictures/(.*) /your_php_file.php?path=$1 break;
或類似的東西。
這可能是安全的,但效率不高,因爲您的服務器必須訪問兩個文件。 php文件和圖像文件
您可以使用'readfile'而不是'file_get_contents'然後使用'echo'。 – LSerni
謝謝您更新和+1 –
我認爲您的意思是重寫規則,什麼是'break'對於? –
也許您應該評估使用像Amazon S3這樣的CDN,它通過RESTful身份驗證提供安全訪問:http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html並避免您的服務器完成提供靜態內容的工作。
執行此類操作的最有效方法可能是通過Apache重寫。用戶登錄時,將條目添加到鍵入用戶會話標識的重寫映射中。入口點的值指向保存圖像的目錄。您需要一個重寫規則,從cookie中解析會話標識並將URL重寫爲圖像目錄。實際上,您只能對該用戶進行目錄訪問。
任何涉及Apache重寫的東西都是巫術。除非你真的有這種流量,否則不值得複雜。通過PHP提供文件效率不高,但在很多情況下效率是可以忍受的。
這取決於你有什麼其他的要求。您可能希望讓用戶通過發送鏈接來分享他們的圖像,以便只有擁有此鏈接的用戶才能看到圖像,即使系統中未經過身份驗證。你提出的實施將會使這變得困難。
如果您不太關心可能的「泄漏」,您可以爲圖像生成隨機名稱,並將所有努力都放在這個真正的隨機性中,這樣就很難猜測圖像名稱。將猜測密碼。一方面,您可以考慮使用「密碼保護」,但請記住,您的路徑將緩存在代理,瀏覽器歷史記錄等中......因此,根據您所保護的資源,這可能不是您的解決方案。
儘量避免在每個請求上使用慢腳本進行身份驗證。 http://www.vitki.net/book/page/pubcookie-module-nginx這將是非常有效的。 – goat