如果一個網站有php會話來強制執行身份驗證/授權到php中實現的網頁,那麼相同的邏輯如何強制訪問某些文件。http文件訪問和php會話
可以說一個目錄中的文件存儲庫。所以/ var/www/html /通過身份驗證來保護,但是這個PHP身份驗證邏輯不會禁止用戶簡單地去http://site.com/someDirectory/fileIShouldNotAccess.txt並拉取該文件。
您如何將php會話和身份驗證與Apache相結合以強制執行此類行爲?
如果一個網站有php會話來強制執行身份驗證/授權到php中實現的網頁,那麼相同的邏輯如何強制訪問某些文件。http文件訪問和php會話
可以說一個目錄中的文件存儲庫。所以/ var/www/html /通過身份驗證來保護,但是這個PHP身份驗證邏輯不會禁止用戶簡單地去http://site.com/someDirectory/fileIShouldNotAccess.txt並拉取該文件。
您如何將php會話和身份驗證與Apache相結合以強制執行此類行爲?
由於PHP在用戶請求非PHP文件時不會被調用,因此您不能讓Apache強制執行PHP的訪問保護。你可以在Apache中做一個非常粗糙和容易僞造的檢查,以確保會話ID cookie存在,但這是非常不安全的。它只是檢查cookie是否在那裏,而不是它代表有效會話或用戶實際上被授予訪問權限。
這個其他答案可能會有所幫助。 Using PHP/Apache to restrict access to static files (html, css, img, etc)。基本上,您通過PHP腳本提供所有受保護的內容,而不是提供直接訪問。
幾個答案:
1)讓你的PHP會話使用HTTP身份驗證。然後,您可以使用.htaccess文件來控制目錄中的文件訪問。
2)使用mod_rewrite將所有請求重定向到「前端控制器」。讓前端控制器管理訪問是被允許,拒絕還是轉發到不同的控制器模塊進行進一步處理。
你能解釋1多一點嗎?在我看來,2會比1更多的工作,我是否正確? – Chris 2010-08-30 18:56:55
基本上,你確定你正在運行php作爲apache模塊。這個鏈接然後填寫你確切的頭部以啓動基於http的驗證: http://php.net/manual/en/features.http-auth.php – Zak 2010-08-30 19:31:40