我正在學習PHP以及做一個涉及上傳文件到服務器的項目。我的目標是儘可能保證安全,因此您建議保存所有上傳的文件。要上傳的文件將全部爲pdf文件。我讀了一些地方最好把文件上傳的文件保存在文檔根目錄之外,而在其他一些地方,我讀起來並不容易從php的文檔根目錄以外訪問文件,所以我很困惑。任何幫助克服這種情況的最佳做法,我們感激不盡!謝謝!我應該在哪裏存儲上傳的文件在服務器?
回答
我相信沒有將文件存儲在根路徑中的理由是理論上有人可以猜測導演並訪問這些文件,您可以學習可能證明是非常困難的權限(在服務器上),或者您使用諸如NAS驅動器之類的東西(它看起來好像是網絡中的本地驅動器,但網絡外部沒有人可以看到),但這可能很昂貴,而且您需要學習另一件事情(配置NAS盒子) 。如果這兩者不起作用,請嘗試使用服務器上的單獨驅動器或將驅動器分區爲兩個驅動器。並在那裏存儲文件,至於它自己的代碼,只需指定完整路徑並將其視爲您在根驅動器上的任何其他文件(這就是我已經做到的,但我不是PHP專業版)。如果您有任何其他問題隨時問,我希望我回答這一個你:)
下面是分區的驅動器的一些方法:
VISTA/Windows Server 2008中(或者其他大多數Windows服務器) :http://blogs.technet.com/b/steve_lamb/archive/2008/07/08/how-to-re-partition-a-hard-disk-under-vista-or-server-2008-without-having-to-re-install.aspx
祝你好運!
爲了安全起見,它不是一個壞主意,上傳臨時存儲文檔根目錄之外,直到他們篩選可執行代碼或以確保它們是你期待什麼。這樣,任何獲得上傳機制訪問權限的人都無法通過界面上傳後門,然後通過瀏覽器訪問它(並接管你的服務器)。此外,他們無法上傳導致您的網站執行其他操作的惡意代碼。
一旦篩查已經發生,爲了讓別人訪問文件(查看PDF文件),文件最終需要存儲的文檔根目錄良好的SEO以上。通過這種方式,他們可以鏈接到搜索引擎的信息並挖掘,而不會對服務器徵稅。
有人說,你可以將它們存儲在文檔根目錄下,然後將它們呈現給你流將它們用fread用戶作爲附件。問題在於,如果您使用的文件很大,如果有多個人或機器人同時連接,您可能會從資源中運行特定的服務器實例。
你也可以保存它們直接流在數據庫中,但無論如何沒有提供額外的安全性初步篩選之外。同樣,它需要內存和開銷來從數據庫中實際檢索它們,並且如果搜索引擎一次全部連接,則搜索引擎可能會再次運行您的系統。
- 1. 我的Azure雲服務存儲文件應該放在哪裏?
- 2. 解析服務器 - 它在哪裏存儲上傳的文件
- 3. 我應該在哪裏存儲需要上傳到服務器的照片?
- 4. 服務器在哪裏存儲文件?
- 5. 我應該在哪裏存儲我的密鑰和https服務器證書(Node.js)
- 6. 我應該在哪裏保存文件
- 7. 我應該在哪裏存儲len(list)?
- 8. 我應該在哪裏存儲公鑰?
- 9. 我應該在哪裏存儲「MemberID」?
- 10. 我應該在哪裏存儲cookie?
- 11. 我應該在哪裏存儲CSS文件在SharePoint安裝?
- 12. 我應該在哪裏停止服務?
- 13. 廚師服務器存儲在哪裏?
- 14. 註冊服務器在哪裏存儲?
- 15. 我應該在哪裏配置文件在web服務
- 16. 我應該在哪裏存儲我的underscore.js迭代器?
- 17. FMDataBase - 我應該在哪裏存儲數據庫文件?
- 18. 我應該在哪裏存儲許可證文件?
- 19. 我應該在哪裏存儲M2Crypto文件
- 20. 我應該在哪裏存儲配置文件?
- 21. 我應該在哪裏上傳github分支的內置文件?
- 22. Symfony2 - 我應該在哪裏放置用戶上傳的文件?
- 23. 我可以在哪裏存儲我的網絡服務器URL?
- 24. WAMP服務器在哪裏存儲數據庫文件
- 25. 哪裏存儲django文件上傳?
- 26. 我應該在哪裏存儲我的網絡應用程序的文件?
- 27. MVC和用戶上傳的文件,在哪裏存儲文件?
- 28. tomcat在哪裏存儲我的文件?
- 29. 我應該在哪裏我的紋理文件存儲在Eclipse項目
- 30. 我應該在哪裏做映射的東西?存儲庫或服務層?
這是一個disccusion問題。它不適合這個網站。這是你的決定,取決於你。 – shnisaka
上傳到文檔根目錄的危險基本上是如果做上傳的人爲您提供了PHP/CGI腳本,並且轉到該URL,會發生什麼情況。這個人會讓你的系統運行他們的代碼。他們還有可能上傳javascript或其他東西的危險,這可能會被用於惡意攻擊你的客戶。 – Zoredache