2013-12-17 31 views
0

是否有可能讓apache調用另一個可執行文件或腳本來檢查訪問限制?Apache:是否有可能將訪問控制委託給可執行文件?

我想要做的是實現一種調用腳本的方式,該腳本可以檢查限制別人而不僅僅是文件系統文件的權限(例如:檢查請求是否包含有效的PHP會話cookie)並告訴apache在某些情況下,如果不允許訪問請求的文件(例如:通過返回0以外的退出碼),它必須返回一個403錯誤代碼。

在過去,我使用PHP腳本來處理圖像文件的請求並處理訪問限制。問題是我必須以編程方式設置所有標題,這不是微不足道的(例如:如果您想支持304個響應,代碼必須檢查文件的修改時間並將其與響應中所述的時間進行比較,或檢查「etags」等)。我想找到一種方法來避免所有這些麻煩,只是讓apache處理「頭部分」和另一個腳本/二進制文件來處理「訪問部分」。

在此先感謝您的幫助!

回答

1

您可以使用,並且在程序返回'NULL'時不允許使用RewriteRule。如果你打算使用一個php腳本,你會打開php://stdin,從它讀取一個傳入的Cookie:標題,並確定它是否是你想要允許的會話。在vanilla php會話中檢查這些會話的問題是,您幾乎要已有來啓動該會話來確定:確保您已加載或自動加載所需的所有可能的類定義,請致電session_id('the id you found in the cookie');,session_start(),檢查$_SESSION,並再次寫入session_write_close()。存在各種各樣的危險(如果你的類沒有正確加載,會導致破壞會話,如果你的PHP腳本意外死亡,則會出錯)等等。

如果你有你的Apache服務器在控制之下,我寧願mod-xsendfile:打開一個php腳本,PHP腳本設置圖像的位置提供,其餘的,包括etags,修改時間等。甚至可以將您的「受限制」內容存儲在文檔根目錄之外(如果您喜歡的話)(但請檢查您提供的內容當然是否包含需要來提供,而不是磁盤上的一些隨機文件)。

+0

非常好!對於我可以從提供的鏈接中獲得的信息,似乎這兩個選項都會幫助我實現預期的結果。解釋也非常好:-)我認爲在這種情況下,mod-xsendfile將是更安全和最簡單的選項。 –

相關問題