2012-03-04 223 views
0

我是新手,爲網站編寫代碼。該網站允許用戶上傳文件,如個人資料照片或其他圖片。這些文件保存在unix文件系統中,並且找到這些圖像的URL存儲在MySQL數據庫中。Web服務器上的文件權限?

似乎我可以讓用戶上傳文件的唯一方法是給任何使用chmod的人提供寫入權限。否則,它會抱怨它沒有寫入權限。但他們不應該能夠寫任何他們想要的或覆蓋其他用戶的東西。同樣,爲了允許用戶查看他們有權訪問的圖像,他們需要在文件系統上具有讀取權限。但是現在這意味着任何具有該圖片的網址的人都可以看到圖片,對嗎?這不是我想要的。

有沒有解決這個矛盾的方法?或者我錯誤地思考了這個問題?謝謝你的幫助。

回答

0

您需要管理應用程序中的權限,而不是將本地文件系統的任意部分直接暴露給客戶端。您的應用程序應該決定他人可以看到什麼文件或寫入數據的位置。您不應該信任客戶端的數據(文件名等)......理想情況下,使用系統生成的名稱將文件存儲在磁盤上,並在數據庫中存儲人類可讀的名稱。

0

SunStar9,

既然你已經在使用MySQL數據庫來存儲文件系統上的圖像的URL,爲什麼不只是圖像本身存儲爲BLOB(二進制大對象)?

這是一個廣爲接受的設計慣例,允許用戶將二進制數據上傳到網站。

您是否在使用PHP,Java,Ruby/Rails或其他來開發您的網站?根據您使用的內容,可能會有文件上傳/管理插件或模塊,這些插件或模塊將幫助您開發您正在嘗試執行的操作,如果您確定要使用文件系統來存儲圖像數據。