我有一個PHP Web應用程序(在Apache/Linux上運行),除其他外,它允許瀏覽Web服務器上的本地文件。由於Apache作爲特殊的「www」用戶運行,因此PHP可以訪問「www」可以訪問的所有內容,無論用戶登錄到應用程序。根據登錄用戶的訪問權限限制PHP的文件訪問
根據登錄用戶的Unix文件系統權限,限制文件訪問的最佳方式是什麼?理想情況下,我可以產生一個新的進程,用戶ID是登錄用戶,但我不確定這是否可能。或者,是否有標準的PHP庫在某處執行權限檢查和訪問文件?
我有一個PHP Web應用程序(在Apache/Linux上運行),除其他外,它允許瀏覽Web服務器上的本地文件。由於Apache作爲特殊的「www」用戶運行,因此PHP可以訪問「www」可以訪問的所有內容,無論用戶登錄到應用程序。根據登錄用戶的訪問權限限制PHP的文件訪問
根據登錄用戶的Unix文件系統權限,限制文件訪問的最佳方式是什麼?理想情況下,我可以產生一個新的進程,用戶ID是登錄用戶,但我不確定這是否可能。或者,是否有標準的PHP庫在某處執行權限檢查和訪問文件?
你可以看看在http://httpd.apache.org/docs/2.0/suexec.html它應該做你需要什麼,而不需要讓用戶和權限的單獨lsit在aplications。
據我所知,這個擴展是在一些(如果不是全部的話)共享主機服務上實現的,以控制資源在用戶之間的分配方式。
這將導致腳本沒有通過www-data(但由系統用戶)執行,並且PHP不作爲模塊運行(通過CGI/fastCGI機制)。
這可以通過三個步驟來完成:
第1步似乎是確保在應用程序中未創建意外訪問漏洞的好方法,但第2步仍然是我不清楚的部分。如何在訪問本地文件時檢查用戶的身份驗證狀態?我如何模仿不同用戶的各種PHP許可檢查功能(如is_writeable,is_executable等)? – Stan 2011-06-02 14:05:58
我不明白你的意思了,因爲訪問該文件的用戶是PHP的用戶,而不是要求你的頁面(你是不是連接到用SSH服務器)
你的一般用戶可能希望在您的應用程序之上實施ACL來管理此權限。
當然Zend公司,並有解決方案:http://framework.zend.com/manual/en/zend.acl.html
謝謝,我認爲這正是我所期待的。 – Stan 2011-06-02 18:32:15